1

i have code that looks like this

             public static void main(String[] args) {
    String string= "11011100010000010001000000000000";
   String string1= "00000000010000110000100000101100";

    System.out.println(Integer.toHexString(Integer.parseInt(string1,2)));

    System.out.println(Integer.toHexString(Integer.parseInt(string,2)));


}

the first string convert just fine but the second one has an error of java.lang.NumberFormatException dont know what the problem is

4

5 に答える 5

5

これを試して:

Long.toHexString(Long.parseLong(string,2))

(parsLong から parseLong に編集)

于 2012-12-03T04:28:54.817 に答える
1

32文字の2進数の最上位ビットがに設定されて1いる場合、結果の値は、でサポートされている正の数の範囲を超え、int有効な整数として解釈できなくなります。これにより、ドキュメントによると例外が発生します。

次のいずれかの状況が発生した場合、タイプNumberFormatExceptionの例外がスローされます。

  • 最初の引数がnullであるか、長さがゼロの文字列です。
  • 基数は、Character.MIN_RADIXよりも小さいか、Character.MAX_RADIXよりも大きいかのいずれかです。
  • 文字列の長さが1より長い場合、最初の文字がマイナス記号'-'('\ u002D')になる場合を除いて、文字列のどの文字も指定された基数の数字ではありません。
  • 文字列で表される値は、int型の値ではありません。(強調は私のものです)

この負の2進値を入力するに-は、数値の前に符号を使用し、残りのビットを2の補数表現に変換します。

32ビットより長い数値が必要な場合、または値が正の数値として解釈され続けるようにしたい場合は、64ビット整数データ型に切り替える必要があります。

于 2012-12-03T04:31:53.007 に答える
1

, (およびメソッド)Longの代わりに使用できます。IntegerLong.parseLongLong.toHexString

于 2012-12-03T04:29:17.077 に答える
0

整数に解析する場合、範囲は次のようになります。

1000000000000000000000000000000001111111111111111111111111111111

于 2012-12-03T04:31:58.967 に答える