繁体   English   中英

如何在Java中将字符串中的非常大的二进制转换为八进制

[英]How Can I Convert Very Large Binary in String to Octal In Java

我的Java代码中有1个String变量,它包含大的二进制数字。 我怎样才能转换它

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

您可以使用更适合在您的解决方案中使用的BigInteger类。 它有一个重载的toString()方法,它接受基数 (在你的情况下为radix = 8)。

String largeBinary = "10101010100000100111011010101";
String octalVersion = (new BigInteger(largeBinary,2)).toString(8);

每三个二进制数字( 01 )恰好代表一个八进制数字(从07 )。

所以我认为算法很简单:迭代每3个后续字符并将它们转换为一个八进制数字:

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

如果字符串的长度不是3的乘数,则需要特别注意。例如:

"1001001110"

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

这种方法不需要解析字符串而不需要额外的内存。 它可以在任意长的输入上工作,并且速度非常快

long值可以容纳任何数字,最多2 ^ 63-1 ,这对于许多应用程序来说已经足够了。 您需要做的就是为parseLong(String string,int radix)方法(以及toString(Long number,int radix)方法)提供适当的radix参数。

long number = Long.parseLong(binaryString, 2);
String octalString = Long.toOctalString(number); // or Long.toString(number, 8);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM