[英]Don't understand how these bitwise operators operate on bytes and integers
我正在处理一些将二进制文件作为输入的代码。 但是,我在理解代码中的for循环时遇到了麻烦,因为我不了解按位运算符对IFD_Address
所做的操作,例如|=
, <<
和& 0xff
。 我认为IFD_Address
指向二进制文件中的指针,但是我不确定。 这段代码试图实现什么?
byte[] IFD_Address_tmp = Arrays.copyOfRange(bytes, 4, 8);
int IFD_Address = 0;
int i = 0;
int shiftBy = 0;
for (shiftBy = 0; shiftBy < 32; shiftBy += 8) {
IFD_Address |= ((long) (IFD_Address_tmp[i] & 0xff)) << shiftBy;
i++;
}
最好通过移动位而不是数字来了解此行为。 字节包括八位,整数,32位。 回路基本上采用每个字节阵列中,并将相应的位整数IFD_Address
在8位块,从右边(至少显著)到左(最显著),如下所示:
关于按位运算:
& 0xff
需要将8位捕获为一个整数 ; <<
将位左移以选择IFD_Address
的适当位置; |=
设置IFD_Address
的位。 有关详细信息,请参见本教程 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.