我对下面这个方法中的'>>'操作有点困惑。程序员是否尝试从字节数据数组中获取第一个和第二个字节而不修改数据数组的内容?那个hte 255(ff)对操作意味着什么?
我感谢任何帮助。
简单
public static int get2ByteData(final int[] data) {
int number = 0;
number += (data[0] & 0xff) << 8;
number += (data[1] & 0xff) << 0;
return number;
}
答案 0 :(得分:1)
这只是一些位掩码/移位操作。
e.g。如果data[0]
包含这些位1111000010101010
,则会发生以下情况:
1111000010101010
&& 0xFF
1111000010101010
&& 0000000011111111
----------------------
0000000010101010
0000000010101010
<< 8
----------------------
1010101000000000
data[1]
同上,但由于bitshift为0,因此没有发生转变。
基本上,此代码采用16位数字,并交换字节数,以便位模式xxxxxxxxyyyyyyyy
变为yyyyyyyyxxxxxxxx