5

Java コードに 1 つの文字列変数があり、大きな 2 進数が含まれています。どうすれば変換できますか

String binary2 = JTextArea.gettext(); // this is a String variable
Long binary3 = Long.parseLong(binary2);
System.out.print(Long.toOctalString(binary3));
4

3 に答える 3

5

BigIntegerソリューションで使用するのにより適切なクラスを使用できます。基数を取るオーバーロードされたtoString()メソッドがあります(あなたの場合、基数= 8)。

String largeBinary = "10101010100000100111011010101";
String octalVersion = (new BigInteger(largeBinary,2)).toString(8);
于 2013-01-12T09:42:57.770 に答える
3

3 桁の 2 進数 (0または1) は、正確に 1 桁の 8 進数( 0~ ) を表し7ます。

したがって、アルゴリズムは単純だと思います。後続の 3 文字ごとに繰り返し処理し、それらを 1 桁の 8 進数に変換します。

"000" -> "0"
"001" -> "1"
"010" -> "2"
"011" -> "3"
...
"111" -> "7"

文字列の長さが 3 の倍数でない場合は、最初に特に注意する必要があります。例:

"1001001110"

"10|101|001|110"
  2|  5|  1|  6

このアプローチでは、文字列を解析する必要がなく、余分なメモリも必要ありません。任意の長い入力で動作し、超高速です

于 2013-01-12T09:39:59.793 に答える
1

値は2^63-1までの任意のlong数値を保持できます。これは、多くのアプリケーションで十分です。必要なことは、 parseLong(String string, int radix)メソッド (およびtoString(Long number, int radix)メソッド) に適切な基数パラメーターを提供することだけです。

long number = Long.parseLong(binaryString, 2);
String octalString = Long.toOctalString(number); // or Long.toString(number, 8);
于 2013-01-12T10:06:12.267 に答える