贴一个十六进制的字符串转十进制的函数
y_pro 2001-07-16 12:37:03 这个是我刚才无聊的时候写的,假定输入是合法的十六进制的字符串,最大为8个(对应32
位整数),没有做“235476afuoiuyt”之类的输入的处理,如果要做的就自己改,很容易
的。
经过我的测试,比sscanf(库函数,可完成同样功能)要快4倍,测试方法是对同一批输入数
据连续运行10000次后的时间比较。
BOOL HexToDec( LPCTSTR shex,int& idec )
{
int i,mid;
int len = lstrlen( shex );
if( len>8 )
return FALSE;
mid = 0; idec = 0;
for( i=0;i<len;i++ )
{
if( shex[i]>='0'&&shex[i]<='9' )
mid = shex[i]-'0';
else if( shex[i]>='a'&&shex[i]<='f' )
mid = shex[i] -'a' +10;
else if( shex[i]>='A'&&shex[i]<='F' )
mid = shex[i] -'A' +10;
else
return FALSE;
mid <<= ((len-i-1)<<2);
idec |= mid;
}
return TRUE;
}
好久没写代码了,有点儿手生了 :(