ラッパー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 が符号ビット) として解析する必要があります。
私はこれについて間違っていますか?