我通過C中的串行接收2個字節的二進制信息。按字母順序在C中接收二進制文件
我正在接收它們的字符。
所以我需要加入2個字符作出一個整數,但林不知道如何做到這一點..首先第一個字節是二進制格式,而不是字符格式..所以我不確定如何將其轉換爲一個適用於我的程序的可用表單。
我通過C中的串行接收2個字節的二進制信息。按字母順序在C中接收二進制文件
我正在接收它們的字符。
所以我需要加入2個字符作出一個整數,但林不知道如何做到這一點..首先第一個字節是二進制格式,而不是字符格式..所以我不確定如何將其轉換爲一個適用於我的程序的可用表單。
您可以使用這樣的事情:
int my_int=char1;
myint<<=8;
myint|=char2;
這是假設char1
包含最顯著字節。否則切換1和2。
這也假定char是無符號的。 – 2012-02-10 09:52:03
使用unsigned char
來避免符號擴展問題。
val16 = char1 * 256 + char2;
一開始,這將是更好地接受他們在無符號字符只是讓你有符號擴展之類沒有問題。
如果你想將它們結合起來,你可以使用類似:
int val = ch1; val = val << 8 | ch2;
或:
int val = ch2; val = val << 8 | ch1;
根據系統的字節序,並假設您的系統有一個八位char
類型。
如果MSB(最高有效字節)是第一位的:
unsigned char array[2];
...
int bla;
bla = array[1] | (array[0] << 8);
如果LSB(最低有效字節)是第一位的:
bla = array[0] | (array[1] << 8);
是最受顯著字節的第一或第二? – 2012-02-10 09:30:12
將每個char轉換爲int,將高位字節移位並將它們加在一起 – Bort 2012-02-10 09:31:04