3

私のコードは単純です:

int idec = Integer.parseInt(value, 16);

値として「01dae610」を入力すると、「31122960」が正しく取得されます。値「d149e510」を入力すると、java.lang.NumberFormatException が発生します。正しい値は「3511280912」です。

これがなぜなのか、私にはわかりません。誰か助けてくれませんか?

4

5 に答える 5

7

の範囲外だからですint。代わりにlong/を使用してください。Long

于 2011-12-28T22:09:00.383 に答える
1

intJavaで署名されているため、最大値は 2 31 - 1 です。

使用Long.parseLong(value, 16)すると、目的の値が得られます。int正しいビット パターンを取得できて満足しているが、代わりに負の値として解釈される場合は、キャスト バックできます。

于 2011-12-28T22:09:59.373 に答える
0

の範囲外だからですintlong代わりにデータ型を使用する必要があります。

于 2011-12-28T22:10:34.097 に答える
0

Integer.MAX_VALUEは 2147483647 であり、予想した値よりも低くなっています。したがって、この文字列は、に解析できるものを表していませんint。したがって、例外です。

于 2011-12-28T22:11:16.780 に答える
0

ここから:

int データ型は、32 ビットの符号付き 2 の補数整数です。最小値は -2,147,483,648 で、最大値は 2,147,483,647 (包括的) です。

3,511,280,912 > 2,147,483,647 であり、NumberFormatException.

ただし、を使用できますlong。同じページから:

long データ型は、64 ビットの符号付き 2 の補数整数です。最小値は -9,223,372,036,854,775,808 で、最大値は 9,223,372,036,854,775,807 (包括的) です。

于 2011-12-28T22:11:42.107 に答える