static unsigned int _atoh(const char * lpszHexStr, size_t uHexLen)
{
register unsigned int uAalue = 0U;
register unsigned int uHalue = 0U;
register size_t uTempSize = uHexLen;
const char * lpszTempPtr = lpszHexStr;
//判断合法性,必须以0x为前缀
if ((uTempSize > 0x02 && uTempSize < 0x0B) &&
(0x30 == *lpszTempPtr++ && 0x78 == *lpszTempPtr++))
{
uTempSize -= 0x02;
while (uTempSize--)
{
//如果是数字0-9
if (*lpszTempPtr > 0x2F && *lpszTempPtr < 0x3A)
{
uAalue = *lpszTempPtr - 0x30;
//如果小写字母a-f
}
else if (*lpszTempPtr > 0x60 && *lpszTempPtr < 0x67)
{
uAalue = *lpszTempPtr - 0x57;
//如果是大写字母A-F
}
else if (*lpszTempPtr > 0x40 && *lpszTempPtr < 0x47)
{
uAalue = *lpszTempPtr - 0x37;
}
else
{
return 0U;
}
//移位计算各个值的和
uHalue += uAalue << 4U * uTempSize;
++lpszTempPtr;
}
}
return uHalue;
}
旧文重整之->_atoh函数
最新推荐文章于 2022-10-19 14:41:23 发布