Java基础之 Byte类型toUnsignedInt方法和toUnsignedLong方法解析

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的,所以当负数进行转换的时候,转换完,你会发现,数反而比之前大了。