Java中如何将两个无符号的byte转换为一个有符号的short?

Python011

Java中如何将两个无符号的byte转换为一个有符号的short?,第1张

这个是可以进行转换和复原的,举例:

short x = -32752//定义一个short

byte high = (byte) (0x00FF &(x>>8))//定义第一个byte

byte low = (byte) (0x00FF &x)//定义第二个byte

System.out.println(high)//打印第一个byte值

System.out.println(low)//打印第二个byte值

// 复原

short z = (short)(((high &0x00FF) <<8) | (0x00FF &low))

System.out.println(z)//输出的结果就是-32752

byte类型在java中用1个字节存储,有8个比特数,有符号位范围是-2的(8-1)次方到2的(8-1)次方减1,即-128~127(由于有一个比特数用于存放符号);所以无符号的话,8位比特数全用来表示数值范围,最低值为00000000(二进制数),即为0;最高值11111111即1+2+4+8+16+32+64+128(2的8次方减1)=255。

public class Test{

public static void main(String[] args) {

byte bytes = -42

int result = bytes&0xff

System.out.println("无符号数: \t"+result)

System.out.println("2进制bit位: \t"+Integer.toBinaryString(result))

}

}