16進数から10進数へ変換するhtoi関数
K&R本 演習2-3
16進数の文字列(0xあるいは0Xが付いているものも含めて)をそれと同値な整数値へ変換する関数htoi(s)を書け。許される文字は0から9とaからfおよびAからFである。
#include <stdio.h> int htoi (const char *s) { int n; if ( *s != '0' || !(*(s+1) != 'x' || *(s+1) != 'X') ) { return 0; } for(n=0,s+=2;*s;s++){ if ( *s >= '0' && *s <= '9' ) { n = 16 * n + (*s - '0'); } else if ( *s >= 'a' && *s <= 'f' ) { n = 16 * n + ((*s - 'a') + 10); } else if ( *s >= 'A' && *s <= 'F' ) { n = 16 * n + ((*s - 'A') + 10); } } return n; } int main(void) { printf("%d",htoi("0xff")); return 0; }
できました。atoi関数の応用ですね。マイナス値に関しては考慮してないのであしからず。