让我们以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 是符号位)。
我错了吗?