-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
在 Java 中想把 9D 转成 byte,首先想到的是
byte v = Byte.parseByte("9D", 16);结果得到一个 java.lang.NumberFormatException,说值的范围越界了。
是的,byte的范围是 -128~127,如果把 9D 当成正数来转换,结果是 157,当然越界了。
问题是我用的是 Byte.parseByte() 啊……难道 Java 还不能明确我是要把 2 位 16 进制转换为 byte 么?最高位是 1 的情况,直接给我转换成负数 -99 就行,干嘛非要转换成 157 再告诉我越界呢……神仙!
无奈+无语之后当然还是要解决问题的,Byte.parseByte() 不行,那只好用 Integer.parseInt() 啦……
所以有这样两个处理办法
byte v = (byte) Integer.parseInt("9D", 16);
// 或者
byte v = Integer.valueOf("9D", 16).byteValue();继续郁闷中……希望 JDK7 能解决这个问题,可恶的 Byte.parseByte(),不干自己该干的事情!