問題:
數據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]);
}
}