Byte类型提供了两个方法:toUnsignedInt方法和toUnsignedLong方法,将一个byte类型的值转换为无符号的int或long类型。
方法声明:
public static int toUnsignedInt(byte x)
public static long toUnsignedLong(byte x)
源码:
public static int toUnsignedInt(byte x) {
return ((int) x) & 0xff;
}
public static long toUnsignedLong(byte x) {
return ((long) x) & 0xffL;
}
看demo:
/**
* Byte 无符号转换
*/
public class ByteTest {
public static void main(String[] args) {
System.out.println("Min:" + Byte.MIN_VALUE + ",Max:" + Byte.MAX_VALUE);
System.out.println(Byte.BYTES);
System.out.println(Byte.SIZE);
System.out.println(Byte.TYPE);
/* 输出
Min:-128,Max:127
1
8
byte
*/
System.out.println("----------------------------------------");
byte a = Byte.parseByte("-100");
System.out.println("-100转换前的二进制值:" + Integer.toBinaryString(a));
System.out.println(Byte.toUnsignedInt(a));
System.out.println(Byte.toUnsignedLong(a));
/* 输出
11111111111111111111111110011100
156
156
*/
}
}
这里转换的时候,高24位是直接算0的,所以当负数进行转换的时候,转换完,你会发现,数反而比之前大了。