将BigInteger转换为int数组的更快方法是什么?

时间:2014-05-10 15:52:47

标签: java biginteger

我有BigInt

BigInteger i = new BigInteger("5876934265987526278534978564378568734564937563487564327564376534875483753475");

我需要将其转换为[] int。我怎么能快速做到这一点?

我的方法很慢

private static int[] convertDigitsToIntArray(java.math.BigInteger x) {
    String s = x.toString();
    int[] result = new int[s.length()];
    for (int i = 0; i < s.length(); i++) {
        result[i] = Integer.parseInt(String.valueOf(s.charAt(i)));
    }
    return result;
}

4 个答案:

答案 0 :(得分:4)

将其转换为字符串,然后迭代字符:

int[] getArr(BigInteger num)
{
    String str = num.toString();
    int[] arr = new int[str.length()];
    for (int i=0; i<arr.length; i++)
         arr[i] = str.charAt(i)-'0';
    return arr;
}

答案 1 :(得分:1)

可能会有所帮助......

public static void main(String[] args) {
      BigInteger i = new BigInteger("5876934265987526278534978564378568734564937563487564327564376534875483753475");
      String iStr = i.toString();
      int[] intArray = new int[iStr.length()];
      for(int j=0; j<iStr.length(); j++) {
          intArray[j] = Integer.parseInt(String.valueOf(iStr.charAt(j)));
      }
  }

答案 2 :(得分:0)

尝试使用:

private static int[] convertDigitsToIntArray(java.math.BigInteger x) {
    String s = x.toString();
    int[] result = new int[s.length()];
    for (int i = 0; i < s.length(); i++) {
        result[i] = s.charAt(i) - '0';
    }
    return result;
}

答案 3 :(得分:0)

您可以将BigInteger转换为String,获取该字符串的char数组并迭代它:

java.math.BigInteger source = new java.math.BigInteger("5876934265987526278534978564378568734564937563487564327564376534875483753475");

char[] array = source.toString().toCharArray();
int[] result = new int[array.length];
for(int i=0; i<array.length; i++)
{
    result[i] = array[i] - '0';
}