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

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM