2个签名短签

Chr*_*oph -2 c++ signed integer char

我有两个char值char_1char_2.现在我想将它们组合成一个16位有符号整数值,其中char_1包含MSB中的符号.

| SGN | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |

| 签署字符1 | 其余的Char 1 | Char 2 |

我的尝试是:

signed short s = (((int)char_1) << 8) & (int)char_2;
Run Code Online (Sandbox Code Playgroud)

现在我得到0 s...

nos*_*nos 5

您需要按位orand

(((int)char_1) << 8) | (int)char_2;
Run Code Online (Sandbox Code Playgroud)

既然你也在处理位,你也应该使用无符号类型(unsigned char,unsigned int,unsigned short.)