我想将32位ASCII数字(例如“FE257469”)转换为等效的32位十六进制数,该数字将存储在32位变量中。最重要的是,我想做没有使用任何库函数,如sscanf(),atoi()等。
有关于此的任何想法吗?
提前感谢。
答案 0 :(得分:1)
通常的方式是:
将结果初始化为0
答案 1 :(得分:1)
以下是基于交换机的这种功能的实现:
unsigned int parseHex( char *str )
{
unsigned int value = 0;
for(;; ++str ) switch( *str )
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
value = value << 4 | *str & 0xf;
break;
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
value = value << 4 | 9 + *str & 0xf;
break;
default:
return value;
}
}