Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从int变量中获取两个较低的字节_Java_Bitwise Operators - Fatal编程技术网

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

Java 从int变量中获取两个较低的字节,java,bitwise-operators,Java,Bitwise Operators,我在Java的int变量中有一些数据(范围在0到64000之间)。如何将字节转换为这个整数?我只需要int中的两个较低字节(范围正常)。如何提取这个 通过与0xFF进行ANDing运算,可以从整数中获得最低字节: byte lowByte = (byte)(value & 0xFF); 这是因为0xFF在第一个字节上方的任何位置都有零位 要获得第二个最低字节,可以在下移数字8点中的所有位后重复此技巧: byte penultimateByte = (byte)((value >&

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

通过与
0xFF
进行ANDing运算,可以从整数中获得最低字节:

byte lowByte = (byte)(value & 0xFF);
这是因为
0xFF
在第一个字节上方的任何位置都有零位

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

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

您不必执行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);

或者试穿一下

+1虽然这不是一个技巧,但它被称为“算术移位”;-)当值大于127时,我得到负值。我们能为此做点什么吗?