我一直在試一會包&將一些字符解壓縮爲一個整數。雖然有些話題與這個問題有關,但我的問題與簽名轉變有關。我不明白的「絕招」才能解籤值,即:使用簽名數據按位解包
char c1 = -119;
char c2 = 26;
// pack
int packed = (unsigned char)c1 | (c2 << 8);
// unpack
c1 = packed >> 0;
c2 = packed >> 8;
// printf(c1, c2) -> Unpacked data: -119 | 26
這工作正常,但是當我嘗試將更多的數據,即:
char c0 = -42;
char c1 = -119;
char c2 = 26;
// pack
int packed = (unsigned char)c0 | (unsigned char)(c1 << 8) | (c2 << 16);
// unpack
c0 = packed >> 0;
c1 = packed >> 8;
c2 = packed >> 16;
// printf -> Unpacked data: -42 | 0 | 26
C1值錯過了。我想這與有關,符號位被移入高位。
我怎麼能回來c1價值?
在此先感謝。
好解釋:)有沒有地方的疑慮。謝謝! – pQB