0
Integer.parseInt("ff8ca87c", 16);

これにより、何らかの理由でNumberFormatExceptionが発生します。それがなぜなのか知っていますか?

Exception in thread "main" java.lang.NumberFormatException: For input string: "ff8ca87c"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
4

1 に答える 1

6

+0xff8ca87c失敗する理由は、符号付き整数に入れようとしているためです。+0x7fffffff最上位ビットが符号の格納に使用されるため、32ビットの符号付き整数の最大値はです。

long代わりに使用してみてください。64ビットのsignedintの最大値はです0x7fffffffffffffff。これは、この場合のニーズには十分すぎるほどです。

または、Java 8ではInteger.parseUnsignedInt("ff8ca87c", 16);、値を符号なし整数として扱うを使用できます。

于 2012-02-08T09:36:08.883 に答える