JAVA:将BigInteger转换为数字数组

JAVA:将BigInteger转换为数字数组,java,biginteger,Java,Biginteger,我有一个大整数 BigInteger b = new BigInteger("2389623956378561348065123807561278905618906"); 我需要打印它的所有数字(2、3、8等等…)。如何操作?转换为字符数组,然后从每个字符中减少“0”字符的ASCII码,以获得0到9之间的数字 char[] digits = b.toString().toCharArray(); for (char digit : digits) { digit -= '0';

我有一个大整数

BigInteger b = new BigInteger("2389623956378561348065123807561278905618906");

我需要打印它的所有数字(2、3、8等等…)。如何操作?

转换为字符数组,然后从每个字符中减少“0”字符的ASCII码,以获得0到9之间的数字

char[] digits = b.toString().toCharArray();
for (char digit : digits) {
    digit -= '0';
    System.out.println((int)digit);
}
请注意,如果您只想打印,请不要减少“0”ASCII值,也不要在打印时强制转换为
int
,而已由和回答,但下面是另一个实现:

byte[] digits = b.getBytes();
for (byte digit : digits) {
    System.out.println (digit & 0xf);
}
它所做的是屏蔽数字的(ASCII)值。例如:

'0' = 48     | In ASCII and Unicode - Decimal
    = 110000 | In binary
因此,如果我们获得最后四位,那么我们就可以得到数字。所以

48 & 0xf (i.e. 15)
= 11 0000
& 00 1111
=    0000
=    0   | Ultimately in decimal.

为什么不直接使用
toString()
并循环遍历字符串呢?
System.out.println(b)
有什么问题?你的标题说你想把它转换成一个“数字”数组,在你的问题中你说你想打印它。“你想达到什么目的?”埃文·诺尔斯非常有趣。谢谢你的提示。这很有帮助。