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)
有什么问题?你的标题说你想把它转换成一个“数字”数组,在你的问题中你说你想打印它。“你想达到什么目的?”埃文·诺尔斯非常有趣。谢谢你的提示。这很有帮助。