1

この例外を解決するのを手伝ってください:-

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000";
        System.out.println("length is " + strBinary.length()); 
        long intParse=Long.parseLong(strBinary, 2);
        System.out.println("int parsed is " +   intParse); 
        String hexString=Long.toHexString(intParse);
          System.out.println(hexString);

Long.parseLongを使用して解析している間、出力はNumberFormatExceptionとともに72です。しかし、昨日まで、この入力に対しても完全に正常に実行されていました。長さとは関係があります...実際に文字列を同等のものに変換しようとしています。 16進値。

助けてください....

4

2 に答える 2

3

Alongは64ビットのデータを保持できます。aが表すことができる最大値longは、9223372036854775807(または2 63 -1)です。解析しようとする文字列は、それよりもはるかに大きくなります。

任意のサイズの整数値を処理できるクラスを使用することで、どこかに行くことができるかもしれません(もちろん、メモリによって効果的に制限されます)。BigInteger

于 2011-10-05T07:30:38.007 に答える
1

ロングはあなたの目的のために小さいです。このようなBigIntegerオブジェクトを使用することをお勧めします

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000";
BigInteger bigInteger = new BigInteger(strBinary, 2);
System.out.println(bigInteger.longValue()); //This would give you the long value
System.out.println(bigInteger.toString(16)); //This would give you the hex string
于 2011-10-05T08:06:37.933 に答える