Funktion - MyHex2Int

Kurzbeschreibung

Diese Funktion konvertiert einen Hex-String (ohne "0x"-Prefix) in eine Integer-Zahl. Die maximale Länge des Strings darf 8 Zeichen nicht überschreiten, da eine uint32 nur 8 Nibbles aufnehmen kann. Ist der String länger, wird 0 zurückgegeben.

Parameter: Rückgabewert:

Code

#include <string.h>
 
uint32_t myHex2Int(char *str)
{
  uint8_t len = strlen(str);
  uint8_t cnt;
  uint8_t c;
  uint32_t retval = 0;
 
  if (len > 8) // uint32 can only contain 8 hex-chars
  {
    return 0;
  }
 
  for (cnt = 0; cnt < len ; cnt++)
  {
    c = (uint8_t)str[cnt];
 
    if ((c >= 'a') && (c <= 'z'))
    {
      // make upper case
      c -= 0x20;
    }
 
    if ((c >= '0') && (c <= '9'))
    {
      retval += c - '0'; 
    }
    else if ((c >= 'A') && (c <= 'F'))
    {
      retval += (c - 'A') + 10;
    }
    else
    {
      return 0;
    }
    if (len - cnt > 1)
    {
      retval <<= 4;
    }
  } 
  return retval;
}


Letzte Änderung: 2015-02-18 21:41:11
Seite erzeugt in 0.029 Sekunden (8.1 kB)