我有兩個字符值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位數是可移植的。 –