void HexStrToByte(const char* source, size_t sourceLen, void* dest)
{
int highByte, lowByte; size_t i;
for (i = 0; i < sourceLen; i += 2)
{
highByte = (int)source[i];
lowByte = (int)source[i + 1];
/*转换高位*/
if (highByte > 0x39)
{
if (highByte < 0x47)
highByte -= 0x37;//大写
else
highByte -= 0x57;//小写
}
else
highByte -= 0x30;
/*转换低位*/
if (lowByte > 0x39)
{
if (lowByte < 0x47)
lowByte -= 0x37;
else
lowByte -= 0x57;
}
else
lowByte -= 0x30;
((char *)dest)[i / 2] = (char)((highByte << 4) | lowByte);
}
}
source为字符串指针
sourceLen为字符串长度,可用strlen函数获得
dest为结果缓冲区,至少需要(sourceLen / 2)的空间,才能保证无内存越界
此版本基于他人版本修改,无编译警告,兼容老式C编译器