繁体   English   中英

不了解这些按位运算符如何对字节和整数进行操作

[英]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位块,从右边(至少显著)到左(最显著),如下所示:

在此处输入图片说明

关于按位运算:

有关详细信息,请参见本教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM