首页 > 代码库 > 16进制串hex与ASCII字符串相互转换
16进制串hex与ASCII字符串相互转换
提供两个函数,方便十六进制串与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进制串hex与ASCII字符串相互转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。