帮我看看我的“实现VC中的十六进制字符转十进制数字”有啥问题没?

hxyman hxyman 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
ULONG ConvertHexToDecW(WCHAR* szHex, BYTE nHexLen)
{
WCHAR c = 0;
BYTE nMagnitude = 0;
ULONG MagnitudeArray[] = {1, 16, 256, 4096, 65536, 1048576, 16777216, 268435456};
ULONG nDec = 0;
while ( nHexLen > 0 && nMagnitude<8 )
{
c = szHex[nHexLen-1];
if ( c>=L'0' && c<=L'9' )
{
nDec += (c-L'0')*MagnitudeArray[nMagnitude];
}
else if ( c>=L'A' && c<=L'F' )
{
nDec += (10+c-L'A')*MagnitudeArray[nMagnitude];
}
else if ( c>=L'a' && c<=L'f' )
{
nDec += (10+c-L'a')*MagnitudeArray[nMagnitude];
}
--nHexLen;
++nMagnitude;
}
return nDec;
}

ULONG ConvertHexToDecA(CHAR* szHex, BYTE nHexLen)
{
CHAR c = 0;
BYTE nMagnitude = 0;
ULONG MagnitudeArray[] = {1, 16, 256, 4096, 65536, 1048576, 16777216, 268435456};
ULONG nDec = 0;
while ( nHexLen > 0 && nMagnitude<8 )
{
c = szHex[nHexLen-1];
if ( c>='0' && c<='9' )
{
nDec += (c-'0')*MagnitudeArray[nMagnitude];
}
else if ( c>='A' && c<='F' )
{
nDec += (10+c-'A')*MagnitudeArray[nMagnitude];
}
else if ( c>='a' && c<='f' )
{
nDec += (10+c-'a')*MagnitudeArray[nMagnitude];
}
--nHexLen;
++nMagnitude;
}
return nDec;
}

#ifdef UNICODE
#define ConvertHexToDec ConvertHexToDecW
#else
#define ConvertHexToDec ConvertHexToDecA
#endif
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
hxyman
VC/MFC 16,550 成员 421,606 内容