Java 从字符串创建一个BigInteger,并在其中填充“0”

Java 从字符串创建一个BigInteger,并在其中填充“0”,java,biginteger,Java,Biginteger,要将数字从十进制转换为二进制,并将填充数字转换为其前端,我需要执行以下步骤: 步骤1:BigInteger二进制=新的BigIntegerInputParam1,2; ->当我用base16定义一个BigInt时,这是可行的,我只是在base2失败时尝试了这个方法,但在上面的base2中没有。 它抛出numberformat异常 步骤2:字符串填充=StringUtils.repeat0,InputParam2; 重复0“InputParam2”的次数 ->这个很好用 步骤3:需要在步骤1中的二

要将数字从十进制转换为二进制,并将填充数字转换为其前端,我需要执行以下步骤:

步骤1:BigInteger二进制=新的BigIntegerInputParam1,2; ->当我用base16定义一个BigInt时,这是可行的,我只是在base2失败时尝试了这个方法,但在上面的base2中没有。 它抛出numberformat异常

步骤2:字符串填充=StringUtils.repeat0,InputParam2; 重复0“InputParam2”的次数 ->这个很好用

步骤3:需要在步骤1中的二进制文件前面附加pad 对于BigInteger,我无法获得类似于.append的内容。 因此,我试图将这个BigInteger数字转换为字符串,并将bappend pad cconvert转换回BigInteger。如果不创建一个新的BigInteger,我将无法得到这个步骤


关于步骤1和步骤3-c的任何指针都会有帮助。

1-您还没有说要在InputParam1中传递什么值,但我猜您传递的不是“1”字符中仅包含“0”的字符串。构造函数的“基数”参数告诉代码如何解释给定的字符串。这对我来说很好:

[InputParam1:Decimal Number in String format(for Eg:30),
 InputParam2:Integer to denote number of repeating 0's to append(for Eg:6)]
如何构造数字与最终如何表示或显示该数字无关。这里的关键思想是数字十六进制、十进制、二进制的表示与数字本身无关,就像前导零不会影响数字的值一样。1111二进制、f十六进制和15十进制都是相同的数字。如果将其中三个分别以2、16和10为基数传递到BigDecimal的构造函数中,则在每种情况下都会得到完全相同的结果。对象将丢失您用来将其设置为初始值的表示形式的任何概念

3-没有前面有零填充的数字int、BigInteger等概念,就像没有概念可以使用哪个基/基数直观地表示数字一样。您可以从概念上考虑,但这只是显示数字的一种方式。它与数字本身无关

我以前没有尝试过,但在Java中似乎没有一种超级简单的方法可以像十进制和十六进制那样使用前导0格式化二进制值,因为String.format没有为二进制提供格式说明符。根据这篇StackOverflow文章,这似乎是最好的方法,将最受欢迎的答案转换为BigInteger:

BigInteger binary=new BigInteger("1000",2);
System.out.println(binary);
下面是我所有的示例代码,以及输出:

String str = String.format("%16s", binary.toString(2)).replace(' ', '0');
输出:

BigInteger binary=new BigInteger("1000",2);
System.out.println(binary);
String str = String.format("%16s", binary.toString(2)).replace(' ', '0');
System.out.println(str);

哎呀!是爪哇,嗯?听起来你是说你想要一个前面有0的大整数。这就是你要问的吗?这毫无意义。这是一个简单的数字。填充数字的前面通常是为了显示,但仅此而已。因此,您可以创建一个字符串,让“0”字符填充表示字符串的数字的前面,或者打印一个BigInteger,在打印过程中添加零。目的是创建一个转换后的数字,其中BigInteger前面填充0,以便随机化,并返回调用方法。那么,您是否建议使用一个字符串,其中0被附加到BigInt并返回该字符串本身?还有,第一步有什么建议吗?是的。根本没有返回前面有填充零的数字的概念。00013是与13相同的数字,数字就是数字。
8
0000000000001000