#include "string.h" | |
static int hex(char ch) | |
{ | |
if ((ch >= '0') && (ch <= '9')) | |
return ch - '0'; | |
if ((ch >= 'a') && (ch <= 'f')) | |
return ch - 'a' + 10; | |
if ((ch >= 'A') && (ch <= 'F')) | |
return ch - 'A' + 10; | |
return -1; | |
} | |
/* | |
* While we find nice hex chars, build a long_val. | |
* Return number of chars processed. | |
*/ | |
int hex2u64(const char *ptr, __u64 *long_val) | |
{ | |
const char *p = ptr; | |
*long_val = 0; | |
while (*p) { | |
const int hex_val = hex(*p); | |
if (hex_val < 0) | |
break; | |
*long_val = (*long_val << 4) | hex_val; | |
p++; | |
} | |
return p - ptr; | |
} |