說我有存儲2個字節的緩衝區:按位開關最顯著和至少顯著字節
char *buf=new char[4];
// 00000010 00000000 (.. other stuff ..)
我想要做的就是切換最少,最顯著字節,並將該值存儲在一個變量是什麼。試圖這樣做如下:
short len=buf[1];
len <<= 8;
len |= buf[0];
// Result, as expected: 00000000 00000010
它的工作原理細粉,除非最顯著字節(BUF [0])是> = 128,這使得所述或運算符(|)填充短的一半1的。例如:
Original: 10000110 00000000
Should be: 00000000 10000110
But is: 11111111 10000110
謝謝(哦,我在讀從文件與file.read(字節...,4); - 甚至都不知道這是有關)
如果要操縱位,請使用無符號類型。如果您想操作數字,請使用簽名類型。 –
如果您不熟悉按位操作,則可以嘗試使用std :: bitset。如果讓你使用像數組一樣的位。完成後,您可以將其轉換回整數。 –