论坛元老
 
- 积分
- 3566
- 金钱
- 3566
- 注册时间
- 2016-1-8
- 在线时间
- 544 小时
|
发表于 2017-10-20 10:45:57
|
显示全部楼层
[mw_shl_code=c,true]/*
* 将字符转换为数值
* */
int c2i(char ch)
{
if(isdigit(ch))
return ch - 48;
if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' )
return -1;
if(isalpha(ch))
return isupper(ch) ? ch - 55 : ch - 87;
return -1;
}
/*
* 功能:将十六进制字符串转换为整型(int)数值
* */
int hex2dec(char *hex)
{
int len;
int num = 0;
int temp;
int bits;
int i;
len = strlen(hex);
for (i=0, temp=0; i<len; i++, temp=0)
{
temp = c2i( *(hex + i) );
bits = (len - i - 1) * 4;
temp = temp << bits;
num = num | temp;
}
return num;
}
int main(int argc, char *argv[])
{
char ch[10] = {0};
strcpy(ch, "1de");
printf("hex:%d\n", hex2dec(ch));
return 0;
} [/mw_shl_code] |
|