C中的按位运算在char中接收二进制

时间:2012-02-10 09:28:41

标签: c bit-manipulation

我通过C语言中的Serial接收2字节的二进制信息。

我正在接收他们。

所以我需要加入2个字符来制作一个int但是我不确定如何做到这一点..首先,第一个字节是二进制格式而不是char格式..所以我不确定我怎么能把它转换成一个我的程序可用的表格。

5 个答案:

答案 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);