从int变量中获取两个较低的字节

时间:2011-01-28 09:02:01

标签: java bitwise-operators

我在Java中的int变量中有一些数据(范围在0到64000之间)。如何转换为这个整数的字节?我只需要来自int的两个较低字节(范围正常)。如何提取这个?

2 个答案:

答案 0 :(得分:25)

您可以通过与0xFF进行AND运算得到整数中的最低字节:

byte lowByte = (byte)(value & 0xFF);

这是有效的,因为0xFF在第一个字节之上的任何地方都有零位。

要获得第二低字节,您可以在向下移动8个点中的所有位后重复此技巧:

byte penultimateByte = (byte)((value >> 8) & 0xFF);

答案 1 :(得分:4)

您不必执行AND操作来获取低位字节,只需将其转换为字节并获取字节变量中的低位字节。

尝试以下两者将给出相同的结果

short value = 257;
System.out.println(value);
byte low = (byte) value;
System.out.println("low: " + low);
byte high = (byte)(value >> 8);
System.out.println("high: " + high);

value = 257;
System.out.println(value);
low = (byte) (value & 0xFF);
System.out.println("low: " + low);
high = (byte) ((value >> 8) & 0xFF);
System.out.println("high: " + high);

或在Ideone.com

上试用