16进制数字转换到Ascll的原理也比较简单,由于unsignal char是8位数据
(这里用unsignal char的原因是表示的数字大小为0-255,用16进制数字FF表示)
可以包含2位16进制数据,所以由2个16进制数字char转换为一个Ascll unsignal char;
函数定义如下:
int HexToChar(unsigned char* dst,const void* src,int len);
代码实现如下:
//第一个参数表示输出转换Ascll格式字符串 空间大小为src的2分之一
//第二个参数表示输入字符串(16进制)
//第三个参数表示需要转换字符串长度
int HexToChar(unsigned char* dst,const void* src,int len)
{
if (0 == src || 0>= len)
{
return -1;
}
const char* psrc = (const char*)src;
int nNum = 0;
int nRun = len / 2;
int nRem = len % 2;//如果最后余最后一个16位数字转换成Ascll
for (int i = 0;i < nRun;i++)
{
int nval = CharToInt(*(psrc + i * 2)) * 16 + CharToInt(*(psrc &