为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用:编码
Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).substring(6)spa
byteVar & 0x000000FF的做用是,若是byteVar 是负数,则会清除前面24个零,正的byte整型不受影响。(...) | 0xFFFFFF00的做用是,若是byteVar 是正数,则置前24位为一,这样toHexString输出一个小于等于15的byte整型的十六进制时,倒数第二位为零且不会被丢弃,这样能够经过substring方法进行截取最后两位便可。code
System.out.println(Integer.toHexString(2));//2 System.out.println(Integer.toHexString(15));//f System.out.println(Integer.toHexString(16));//10 System.out.println(Integer.valueOf("F", 16));//16 //负整数时,前面输入了多余的 FF ,没有去掉前面多余的 FF,按并双字节形式输出 System.out.println(Integer.toHexString(-2).toUpperCase());//FFFFFFFE //实质上0xFF会像转换成0x000000FF后再进行位运算 System.out.println(Integer.toHexString(-2 & 0xFF).toUpperCase());//FE System.out.println(Integer.toHexString(-2 & 0x000000FF).toUpperCase());//FE
//注,FE输出时不会为-2,由于此时不会把FE当作负数,valueOf会把全部数字串当作正的 System.out.println(Integer.valueOf("FE", 16));//254 //若是要输出-2,只能按如下形式输出 System.out.println(Integer.valueOf("-2", 16));//-2 //因此要把 FE 当作负的话,只能在前面加上负号,可是这里输出还不是-2, //而是先计算Integer.valueOf("FE", 16),再在结果前加上负 System.out.println(Integer.valueOf("-FE", 16));//-254
System.out.println(Integer.valueOf("-80", 16));//-128 System.out.println(Integer.valueOf("7fffffff", 16));//2147483647 //System.out.println(Integer.valueOf("80000000", 16));//不能运行,已注掉 System.out.println(Integer.valueOf("-80000000", 16));//-2147483648
System.out.println(Integer.toBinaryString(-2));//11111111111111111111111111111110 System.out.println(Integer.toBinaryString(-2 & 0xFF));//11111110 System.out.println(Integer.toBinaryString(-2 & 0x000000FF));//11111110 System.out.println(Integer.valueOf("1111111111111111111111111111111", 2));//2147483647 //System.out.println(Integer.valueOf("10000000000000000000000000000000", 2)); System.out.println(Integer.valueOf("-10000000000000000000000000000000", 2));//-2147483648 System.out.println(Integer.valueOf("11111110", 2));//254 System.out.println(Integer.valueOf("-11111110", 2));//-254