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]);

    }

}

 

posted @ 2021-05-24 17:06  jernia  阅读(1671)  评论(0编辑  收藏  举报