5

我有一个位掩码要存储在一个字节中,因为我只需要 8 位。当我创建它时,我将它作为一个字符串(我认为这样会更容易)然后我将它转换为一个字节Byte.parseByte(mask,2),但我发现它不适用于某些值:

String bits="10000001";
Byte.parseByte(bits,2);// throws a NFE

但如果我这样做:

byte b=(byte)0x81; //1000 0001

没有问题。

PS:我找到了解决方法,byte b=(byte)Integer.parseInt(bits, 2);但无论如何我想知道为什么我不能将 8 位转换为一个字节

4

1 回答 1

7

10000001二进制是129十进制。因此,它大于Byte.MAX_VALUE.

您的解决方案

byte b=(byte)0x81; //1000 0001

将导致b具有 value -127。您的解决方法也是如此。

于 2013-06-06T10:32:59.383 回答