我如何使用biginteger来操作二进制值

azd*_*oud -7 java binary biginteger

我正在使用java,我正在尝试使用不同基数(2,8和10)的数字.

所以,我问这个问题是将字符串格式的二进制数改成基数为10的数字

例如110000001010100000000000000000111111/base 2

我尝试了Integer.parseInt(str,radix),但是我遇到了错误.exepetion""线程中的异常"main"java.lang.NumberFormatException:对于java.lang上的java.lang.NumberFormatException.forInputString(Unknown Source)java.lang.Integer.parseInt(Unknown Source)中的输入字符串:"110000001010100000000000000111111" .Integer.parseInt(未知来源)

Som*_*Guy 5

BigInteger提供了一个BigInteger(String,int)构造函数,您可以在其中定义radix.您可以简单地创建两个实例,一个用于初始值,另一个用于1.你需要继续使用BigInteger#add.

完成此操作后,还有一个toString(radix)功能BigInteger,您可以在其中显示不同基数的结果.

public static void main(String[] args) {
    BigInteger base = new BigInteger("11000000101010000000000111111111", 2);
    BigInteger one = new BigInteger("1", 2);
    BigInteger result = base.add(one);
    System.out.println(result.toString(2));
}   
Run Code Online (Sandbox Code Playgroud)

产量

11000000101010000000001000000000
Run Code Online (Sandbox Code Playgroud)