说我有存储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。如果让你使用像数组一样的位。完成后,您可以将其转换回整数。 –