假设我有一个存储 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,这使得 or 运算符 (|) 用 1 填充短的一半。例子:
Original: 10000110 00000000
Should be: 00000000 10000110
But is: 11111111 10000110
谢谢(哦,我正在使用 file.read(...,4); 从文件中读取字节 - 甚至不知道这是否相关)