我有两个字符值char_1
和char_2
。现在我想将它们组合成16位有符号整数值,其中char_1
包含MSB中的符号。2个字符来签名短
| SGN |位6 |位5 |位4 |位3 |位2 |位1 |位0 |位7 |位6 |位5 |位 4 |位3 |位2 |位1 |位0 |
|签名字符1 |其余的Char 1 | Char 2 |
我的尝试是:
signed short s = (((int)char_1) << 8) & (int)char_2;
现在,我得到0 s
...
请注意,您对整数大小的隐含假设是不可移植的。考虑从''使用固定宽度类型'std :: int8_t'和'std :: int16_t'。 –
5gon12eder
假设'signed char'能够保存一个有符号的8位数,并且假设short将保存一个有符号的16位数是可移植的。 –