#include "stdio.h"
unsigned long long hChar2ul(char str){
/* 把一个十六进制字符转换成数字 */
unsigned long long out=0;
if(str>='a' && str<='f'){
out = str - 'a' + 10;
} else if(str>='A' && str <= 'F'){
out = str - 'A' + 10;
} else{
out = str - '0';
}
return out;
}
unsigned long long hStr2ul( char *str unsigned long long len){
/* 把一个十六进制字符串转换成无符号长整数,len < 16 (64位系统中) */
unsigned long long out=0;
unsigned long long i=0;
out= hChar2ul( str[0] );
for (i=1;i<len;i++){
out = out * 16 + hChar2ul ( str[i] );
}
return out;
}
int main(){
char s[17]={'F''0''f''a' 'c''8''F''0' 'F''E''B''d' '7''5''2''1' 0};
unsigned long long g = hStr2ul( s 16 );
printf("0x%s=%lX=%lu\n" sgg);
}