日期:2014-05-20  浏览次数:20692 次

java十六进制取值的问题
byte[] b = new byte[1024]

b[1] = -126

实际这个值是2

其实这是个十六进制。我朋友说b[1]转成十六进制后 & 0x01111111 就能得到b[1]=2了。
但他没时间了,我也不知道怎么写...求大神哇。

补充 b[1] = -127 //实际是1
b[1] = -125 //实际是3


------解决方案--------------------
-126 --- 0x11111110 的补码 0x00000001 +1 = 0x00000010 
0x00000010 & 0x01111111 = 0x00000010 = 等于十进制的 2了
------解决方案--------------------
-127 --- 0x11111111 的补码 0x00000000 +1 = 0x00000001
0x00000001 & 0x01111111 = 0x00000001 = 等于十进制的 1了


-125 --- 0x11111101 的补码 0x00000010 +1 = 0x00000011
0x00000011 & 0x01111111 = 0x00000011 = 等于十进制的 3了
------解决方案--------------------
探讨
是啊。求具体JAVA代码哇。。