原文链接:http://blog.youkuaiyun.com/gzliudan/article/details/23478169
在工控通信中经常用到16进制和ASCII码字符数组互相转换的功能,虽然功能简单,但初学者写出来的代码经常会有各种问题。从16进制转为ASCII吗的功能函数,一个比较简洁的实现版本如下:
void HexToAscii( char * Dest, char * Src, int SrcLen )
{
for ( int i = 0, j = 0; i < SrcLen; i++ )
{
char HiHalf = Src[i] >> 4;
char LoHalf = Src[i] & 0x0F;
Dest[j++] = ( HiHalf <= 9 ) ? ( HiHalf + '0' ) : ( HiHalf - 10 + 'A' );
Dest[j++] = ( LoHalf <= 9 ) ? ( LoHalf + '0' ) : ( LoHalf - 10 + 'A' );
}
}