JAVA:将BigInteger转换为数组

时间:2014-05-08 06:38:48

标签: java biginteger

我有一个大整数

BigInteger b = new BigInteger("2389623956378561348065123807561278905618906");

我需要打印所有数字(2,3,8等等......)。我该怎么办?

2 个答案:

答案 0 :(得分:3)

转换为char数组,然后从每个char减少' 0'的ASCII代码char,获取0到9之间的数字

char[] digits = b.toString().toCharArray();
for (char digit : digits) {
    digit -= '0';
    System.out.println((int)digit);
}

请注意,如果您只是想要打印,请不要减少“0' 0' 0 ASCII值,打印时不要转换为int

答案 1 :(得分:0)

Evan Knowlesuser3322273已经回答了,但这是另一种实现:

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.