5

必要なビットマスクは 8 ビットだけなので、1 バイトで格納するビットマスクがあります。私がそれを作成しているとき、私はそれを文字列として行い(この方法で簡単になると思いました)、それを でバイトに変換しますが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 ビットを 1 バイトに変換できない理由を知りたいです。

4

1 に答える 1

7

10000001 binary is 129 decimal. Ergo, it is bigger than Byte.MAX_VALUE.

Your solution

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

will result in bhaving the value -127. The same holds true for your workaround.

于 2013-06-06T10:32:59.383 に答える