C語言--十六進位制陣列轉換為字串、十六進位制字元陣列串列埠傳送
阿新 • • 發佈:2019-02-10
首先,我們會遇到這麼多種的“十六進位制的表達字串”:
char *str1 = "FF FF 12 FE EE 00 2F 09 3D 22 00 FF";
char *str2 = "FFFF12FEEE002F093D2200FF";
char *str3 = "0xFF 0xFF 0x12 0xFE 0xEE 0x00 0x2F 0x09 0x3D 0x22 0x00 0xFF";
char str4[] = {0x12,0x00,0xFF,0xFF,0x01,0x00,0x0C,0x01,0x0F,0x3C};
問題一:
我有一個模組,它只發送16進位制資料,和只接受16進位制資料。
1、我接受到它發過來的資料是這樣的子的:
"FF FF 12 00 01 00 11 05 00 00 00 00 00 A4 45 21"
2、然後我嘗試用串列埠傳送:
失敗一:
char *str = "FF FF 12 FE EE 00 2F 09 3D 22 00 FF";
printf(str); // 串列埠列印
失敗二:
char *str = "FF FF 12 FE EE 00 2F 09 3D 22 00 FF";
int i = 0;
for(;i < strlen(str); i++)
{
printf("%02X", str[i]); // 串列埠列印
}
3、分析
8421 8421
|||| ||||
0101 1001
hex 5 9 ----> 0x59
dec 89 ----> 89
char 'Y' ----> 'Y'
假設,我收到一個16進位制數 0x59
我的串列埠會怎麼做呢?
---> str[0] = '5'
1個位元組的 0x59 串列埠會把它們處理成兩個字元,分別存放在兩個陣列元素裡面,即2個位元組
---> str[1] = '9'
如果我還想把它傳送出去,就像這樣:
char *str = '59';
printf(str);
那麼我傳送出去的就是字元’5’和’9’了。