在Java中使用0xFF的按位和运算符的原因

时间:2013-07-27 12:28:51

标签: java bitwise-and

我正在做c类型(u8,s16,u32,..) - java转换(只是一个包含boolean signed和long值的类)。当然长度为位数。

所以例如:u8 签署= FALSE 长度= 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)));
}

例如value = 7;长度= 8

什么可以0xff&amp; ()完成?因为

0xff仅为1111 1111,7为0000 0111 =&GT;结果0000 0111

或者其他事情发生在这里?

1 个答案:

答案 0 :(得分:2)

0xFF选择int的前8位。因此,如果value是一个int,你选择前8位,这就是你需要它的原因:如果你的int包含多于8位,你可以用这个字节掩码选择它们。值&gt;&gt; stuff将有趣位从当前位置移动到前8位,因此bytemask可以选择它们。