我有一个位掩码存储在一个字节,因为我只需要8位。当我创建它的时候,我把它作为一个字符串来做(我认为这样做会更容易),然后我把它转换成一个字节 Byte.parseByte(mask,2)
,但我发现它不适用于某些值:
String bits="10000001";
Byte.parseByte(bits,2);// throws a NFE
但如果我这么做了:
byte b=(byte)0x81; //1000 0001
没有问题。
我找到了一个解决办法, byte b=(byte)Integer.parseInt(bits, 2);
但不管怎样,我想知道为什么我不能把8位转换成一个字节
1条答案
按热度按时间ds97pgxw1#
10000001
二进制是129
十进制的。因此,它比Byte.MAX_VALUE
.你的解决方案
将导致
b
有价值的-127
. 这同样适用于您的解决方案。