我有一个大整数
BigInteger b = new BigInteger("2389623956378561348065123807561278905618906");
我需要打印所有数字(2,3,8等等......)。我该怎么办?
答案 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 Knowles和user3322273已经回答了,但这是另一种实现:
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.