c语言,十六进制字节数组和字符数组之间相互转换
问题:
数据0xeb1235acdf可表示成如下:
BYTE byte_array[5] = {0xeb, 0x12, 0x35, 0xac, 0xdf}; 转换成 char *char_array[10] = {'e', 'b', '3', '5', 'a', 'c', 'd', 'f'}
转换:
1. 一个十六进制4位,两个8位,即两个十六进制表示一个字节。
2. 字节转字符时,要把每个字节拆开,每4位转成一个字符。
3. 字符转字节时,要合并相邻的两个字符,转成一个字节。
代码:
array_hex2char(char *char_out, size_t out_len, char *hex_in, size_t in_len){
int i = 0;
int j = 0;
for (; (i < out_len - 2) && (j < len); i+= 2, ++j){
snprintf(&char_out[i], 3, "%02x", hex_in[j]);
}
}
array_char2hex(char *char_in, size_t in_len, char *hex_out, size_t out_len){
int i = 0;
int j = 0;
for (; i < in_len; i+= 2, j++){
sscanf(&char_in[i], 3, "%02hhx", &hex_in[j]);
}
}