我通过C语言中的Serial接收2字节的二进制信息。
我正在接收他们。
所以我需要加入2个字符来制作一个int但是我不确定如何做到这一点..首先,第一个字节是二进制格式而不是char格式..所以我不确定我怎么能把它转换成一个我的程序可用的表格。
答案 0 :(得分:4)
只是OR
他们在一起?
x = (b1 << 8) | b2;
确保他们没有签名或相应地施放(转移签名的东西是令人讨厌的)。
答案 1 :(得分:1)
您可以使用以下内容:
int my_int=char1;
myint<<=8;
myint|=char2;
这假设char1
包含最重要的字节。否则切换1和2。
答案 2 :(得分:1)
使用unsigned char
来避免签名扩展问题。
val16 = char1 * 256 + char2;
答案 3 :(得分:1)
首先,最好在 unsigned 字符中接收它们,这样就不会出现符号扩展等问题。
如果要将它们组合起来,可以使用以下内容:
int val = ch1; val = val << 8 | ch2;
或:
int val = ch2; val = val << 8 | ch1;
取决于系统的字节顺序,并假设您的系统具有8位char
类型。
答案 4 :(得分:0)
如果MSB(最高有效字节)是第一个:
unsigned char array[2];
...
int bla;
bla = array[1] | (array[0] << 8);
如果LSB(最低有效字节)首先出现:
bla = array[0] | (array[1] << 8);