ラッパーByte.parseByte()
のparseXXX()
.
からparseByte(String s, int radix)'s JavaDoc
:
文字列引数を、2 番目の引数で指定された基数の符号付きバイトとして解析します。
しかし、それは完全に真実ではありませんradix = 2
。つまり、 のバイナリ リテラル-127
は次の10000000
とおりです。
byte b = (byte) 0b10000000;
したがって、次のことが当てはまる必要があります。
byte b = Byte.parseByte("10000000", 2);
残念ながら、それは をスローNumberFormatException
し、代わりに次のようにする必要があります。
byte b = Byte.parseByte("-111111", 2);
whereparseByte()
は、バイナリ文字列を符号付きバイナリ (符号と大きさ) として解析します。ここで、符号付きバイナリ (2 の補数、つまり MSB が符号ビット) として解析する必要があります。
私はこれについて間違っていますか?