将BigInteger拆分为特定的位数

时间:2012-11-01 11:34:41

标签: java biginteger

我想拆分BigInteger号码 (1612513671536531537631747547475745713467754864474894674969787486558856856587856595095785859828347864647647545474665743827865765785635689266855775685657587586565858655985865858568585856858)

到20位数字。我怎么能这样做?非常感谢你。

3 个答案:

答案 0 :(得分:1)

将它作为字符串

后,您可以尝试将其拆分为下方
String s = "1612513671536531537631747547475745713467754864474894674969787486558856856587856595095785859828347864647647545474665743827865765785635689266855775685657587586565858655985865858568585856858";
    String [] numbers =s.split("(?<=\\G.{20})");


for(String num:numbers){
        System.out.println(num);
    }

并且输出

16125136715365315376
31747547475745713467
75486447489467496978
74865588568565878565
95095785859828347864
64764754547466574382
78657657856356892668
55775685657587586565
85865598586585856858
5856858

答案 1 :(得分:0)

将其转换为String,然后使用

String strBigInt = <yourBigInt>.toString();
List<String> parts = new ArrayList<String>();
while(strBigInt.length > 20){
    parts.add(strBigInt.substring(0,20));
    strBigInt = strBigInt.substring(20);
}
parts.add(strBigInt);

答案 2 :(得分:0)

  

12345678901234567891应该成为1234567890123456789和1

String s = bi.toString();
List<String> parts = new ArrayList<String>();
for (int i = 0; i < s.length(); i += 20)
    parts.add(s.substring(i, Math.min(i + 20, s.length())));
System.out.println(parts);

打印

[16125136715365315376,31747547475745713467,75486447489467496978,74865588568565878565,95095785859828347864,64764754547466574382,78657657856356892668,55775685657587586565,856565598586585856858,5856858]