16进制串hex与ASCII字符串相互转换
2014-10-05 22:07
573 查看
提供两个函数,方便十六进制串与ASCII 字符串之间的相互转换,使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL 。
char *chstohex ( char* chs ) { char hex[16] = { '0', '1', '2', '3', '4', '5', '6', \ '7', '8','9', 'A', 'B', 'C', 'D', 'E', 'F' }; int len = strlen ( chs ); char* ascii = NULL ; ascii = (char*)calloc ( len * 3 + 1, sizeof(char) ); // calloc ascii int i = 0; while( i < len ) { ascii[i*2] = hex[(int)( (char)chs[i] / 16 )] ; ascii[i*2 + 1] = hex[(int)( (char)chs[i] % 16 )] ; ++i; } return ascii; // ascii 返回之前未释放 } // 函数输入16进制字符串,输出对应的字符串 char *hextochs ( char* ascii ) { int len = strlen ( ascii ) ; if( len%2 != 0 ) return NULL ; char *chs = NULL ; chs = (char*)calloc( len / 2 + 1, sizeof(char) ); // calloc chs int i = 0 ; char ch[2] = {0}; while( i < len ) { ch[0] = ( (int)ascii[i] > 64 ) ? ( ascii[i]%16 + 9 ) : ascii[i]%16 ; ch[1] = ( (int)ascii[i + 1] > 64 ) ? ( ascii[i + 1]%16 + 9 ) : ascii[i + 1]%16 ; chs[i/2] = (char)( ch[0]*16 + ch[1] ); i += 2; } return chs ; // chs 返回前未释放 }
相关文章推荐
- 16进制串与ASCII字符串相互转换
- 字符串UTF-8与ASCII相互转换
- 单片机与安卓(java)字符串与字节,ascii之间的相互转换
- ASCII,UTF-8,Unicode字符串相互转换(转)
- C#字符串与ASII16(HEX)进制相互转换
- windows ASCII,UTF-8,Unicode字符串相互转换
- utf,unicode,ascii字符串之间的相互转换
- 3、颜色的字符串、十进制、十六进制相互转换(color convert between dec、hex and string )
- Java中字符串与ASCII相互转换
- Java初学习 - 字符串与ASCII相互转换
- 也说VC下 UNICODE和ASCII字符串相互转换
- C# 八进制数值字符串转换成ASCII 字符串相互转换
- Java中字符串与ASCII相互转换
- C++编程:ASCII,UTF-8,Unicode字符串相互转换
- ASCII,UTF-8,Unicode字符串相互转换
- 【C#】Hex字符串与整数的相互转换
- C# ASCII与字符串间相互转换
- C/C++中ASCII与Unicode字符串相互转换
- ascii和字符串的相互转换
- ASCII,UTF-8,Unicode字符串相互转换