16進数の16ビット値を表すJava文字列があります。この文字列は、"0000"
〜"FFFF"
のいずれかで指定できます。16ビット16進数の文字列をJavaで符号付き整数に変換する
私はInteger.parseInt("FFFF",16)
を使用して整数に変換します。ただし、符号なしの値(65535
)が返されます。
符号付きの値を返すようにします。この特定の例では、"FFFF"
は-1
を返します。
どうすればこの問題を解決できますか?私はShort.parseShort("FFFF",16)
を使用すると思ったが、それは16ビット値なので、範囲外です。私はparseShort()
が負の符号を期待していると思います。
@AndreasFesterを試しに、なぜこれが短いなど、さらにキャストを必要としません? – Rachael
@Rachael 'Integer.parseInt'によって返される値は、(0x4FF)の' int'値( '0xFFFF')のため、' 65535'です。これを「short」に割り当てることによって、上位16ビットは効果的に破棄され、ビット15は短値の符号ビットとして取り込まれ、結果として「-1」(すべてのビットは1)となる。キャストはキャストなしで、コンパイラはintからshortへの可能性のある変換の可能性について文句を言います。 –
@AndreasFesterその素晴らしい説明に感謝します。 – Rachael