【发布时间】:2023-01-07 07:47:15
【问题描述】:
我有以下一段代码,我试图理解它的作用。我知道从字节值中提取整数值,但我并不真正理解它的作用和工作原理:
public int decodeInt(byte[] input, int length) {
int value = 0;
int p = 0;
int paddingPositions = 4 - length;
for (int i = 0; i < 4; i++) {
int shift = (4 - 1 - i) * 8;
if (paddingPositions-- > 0) {
value += (0 & 0x000000FF) << shift;
} else {
value += (input[p] & 0x000000FF) << shift;
p++
}
}
return value;
}
它似乎填充值以获得高位和低位并以某种方式将它们相加(移位步骤对我来说看起来很奇怪)。
【问题讨论】:
-
你知道轮班操作员是做什么的吗?
-
将所有位向一个方向移动给定的位数?
-
为什么移位操作符看起来很奇怪?
-
value += (0 & 0x000000FF) << shift;与value += 0相同,因此是空操作。