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

Dam*_*mir 13 java bitwise-operators

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

tem*_*def 27

您可以通过ANDing从整数中获取最低字节0xFF:

byte lowByte = (byte)(value & 0xFF);
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为0xFF在第一个字节上方的位置都是零位.

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

byte penultimateByte = (byte)((value >> 8) & 0xFF);
Run Code Online (Sandbox Code Playgroud)

  • 虽然它不是骗局,但它被称为"算术移位";-) (3认同)

Mub*_*har 5

您无需执行AND操作即可获取低位字节,只需将其转换为字节并获取byte变量中的低位字节即可。

尝试跟随两者都会给你相同的结果

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);
Run Code Online (Sandbox Code Playgroud)

或在Ideone.com尝试