我有这行代码
int b1 = 0xffff & (content[12]<<8 | 0xff & content[11]);
Run Code Online (Sandbox Code Playgroud)
我有一个小端的bytearray(content []),需要重新创建一个2字节的值.这段代码完成了这项工作,但在测试之前我就是这样编写的
int b1 = 0xffff & (content[12]<<8 | content[11]);
Run Code Online (Sandbox Code Playgroud)
结果不对.我的问题是为什么在这种情况下需要0xff?
Ted*_*opp 12
0xff由于两个因素的汇合,这是必要的:
int(或者long,如果需要)提升它们的参数.结果是,如果设置了高位content[11],则将其符号扩展为负值int.你需要那么&这个与0xff它返回到(正)字节的值.否则当你|得到结果时content[12]<<8,高位字节将全是1.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |