让我们以Byte.parseByte()
包装器之一为例parseXXX()
。
来自parseByte(String s, int radix)'s JavaDoc
:
将字符串参数解析为第二个参数指定的基数中的有符号字节。
但如果radix = 2
. 换句话说,的二进制文字-127
是10000000
:
byte b = (byte) 0b10000000;
所以以下应该是正确的:
byte b = Byte.parseByte("10000000", 2);
但不幸的是,它会抛出NumberFormatException
,而我必须这样做:
byte b = Byte.parseByte("-111111", 2);
whereparseByte()
将二进制字符串解析为符号大小(符号和大小),它应该解析为有符号二进制(2 的补码,即 MSB 是符号位)。
我错了吗?