我正在做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
或者其他事情发生在这里?
答案 0 :(得分:2)
0xFF选择int的前8位。因此,如果value是一个int,你选择前8位,这就是你需要它的原因:如果你的int包含多于8位,你可以用这个字节掩码选择它们。值&gt;&gt; stuff将有趣位从当前位置移动到前8位,因此bytemask可以选择它们。