| #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; | |
| } |