0

我正在做 c 类型 (u8, s16, u32,..) - 到 java 的转换(只是一个包含布尔符号和 long 值的类)。当然还有位数的长度。

所以例如: u8 signed=false length=8;

但是在将类型转换为 int[]

有这个:

int[] ret = new int[length / 8];
for (int i = 0; i < ret.length; i++) {
  ret[ret.length - 1 - i] = (char) (0xff & (value >> ((ret.length - i - 1) * 8)));
}

例如值=7;长度=8

0xff & () 能做什么?自从

0xff 只是 1111 1111 而 7 是 0000 0111 => 结果 0000 0111

还是这里发生了其他事情?

4

1 回答 1

2

0xFF 选择 int 的前 8 位。因此,如果 value 是 int,则选择前 8 位,这就是您需要它的原因:如果您的 int 包含超过 8 位,则可以使用此字节掩码选择它们。值 >> stuff 将感兴趣的位从当前位置移动到前 8 个位置,以便字节掩码可以选择它们。

于 2013-07-27T12:35:13.293 回答