#include unsigned int htoi(char hex[]) { char c; int i; int length; int power; unsigned int result; for (length = 0; hex[length] != '\0'; ++length) power = 1; result = 0; for (i = length - 1; i >= 0; --i) { c = hex[i]; printf("%c\n", c); if (c >= 'a' && c <= 'f') c = c - 'a' + 10; else if (c >= 'A' && c <= 'F') c = c - 'A' + 10; else if (c >= '0' && c <= '9') c = c - '0'; else if (c == 'x' || c == 'X') break; else return 0; result += c * power; power *= 16; } return result; } int main() { char hex[] = "0x589"; printf("%d\n", htoi(hex)); }