之前做过一些项目需要用到ASCLL码转换到16进制,在网上搜索后发现,大部分都是10进制数字转16进制数据,这对于8位字符类型unsignal char
(这里不用char,因为char是-127到128,对于129-255之间的数溢出变为负数,算起来稍微麻烦 ,采用unsignal char是因为它的值在0到255)
来讲他可以接收最大为255的数字(从Ascll码左边可以看到数字),市面上的转换方式大多都是一个char对应一个数字比如0-F,这对于char说浪费4位没有使用而且超过’f’范围的解析不了;
下面贴上手动实现的代码:
函数定义如下:
int charToHex(char* dst,const unsigned char* src,int len);
代码实现如下:
//第一个参数表示输出转换字符串 空间大小大大于 src的2倍
//第2个参数表示输入字符串(ASCLL码)
//第3个参数表示需要转换字符串长度
int charToHex(char* dst,const unsigned char* src,int len)
{
if (0 == src)
{
return -1;
}
int nNum = 0;
const unsigned char*psrc = src;
for (int i = 0;i <