これは私がJavaで見たものであり、私を困惑させます。
Long.toHexString(0xFFFFFFFF)
戻り値ffffffffffffffff
同様に、0xFFFFFFFF
とLong.parseLong("FFFFFFFF", 16)
は等しくありません。
これは私がJavaで見たものであり、私を困惑させます。
Long.toHexString(0xFFFFFFFF)
戻り値ffffffffffffffff
同様に、0xFFFFFFFF
とLong.parseLong("FFFFFFFF", 16)
は等しくありません。
これ:
Long.toHexString(0xFFFFFFFF)
次と同等です。
Long.toHexString(-1)
これは次と同等です:
Long.toHexString(0xFFFFFFFFFFFFFFFFL)
基本的に、問題は、負の値を指定していることです。これは、「すべての F」で構成されるint
同等の負の long値に変換されます。本当に8 つの F が必要な場合は、次を使用する必要があります。
Long.toHexString(0xFFFFFFFFL)
他の人が言ったように、 int valueに0xFFFFFFFF
評価され、a に昇格します。-1
long
期待どおりの結果を得るには、定数を接尾辞で修飾して、としてL
扱う必要があることを示します。long
Long.toHexString(0xFFFFFFFFL)
0xFFFFFFFF
はint
リテラルです。int
s (Java では 32 ビット)を使用する場合は、0xFFFFFFFF
と等しくなり-1
ます。あなたのコードは何をしますか:
0xFFFFFFFF
として解析しますint
-1
Long.toHexString(-1)
(ここで期待される に-1
自動的に「キャスト」されます)long
また、long
s (Java では 64 ビット)を使用する場合-1
は0xffffffffffffffff
.
long
リテラルは . によって後置固定されますL
。したがって、期待される動作は Java で次のように記述されます。
Long.toHexString(0xFFFFFFFFL)
そしてLong.toHexString(0xFFFFFFFFL)
_"ffffffff"
もちろん、Long
Java では 64 ビット長です。0xFFFFFFFF
は を意味-1
し、int
64 ビットで記述した場合は ですffffffffffffffff
。
ただし、番号が署名されていない場合、文字列もffffffff
[ただしunsigned
Java にはありません] になります。