旧文重整之->_atoh函数

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值