如何将int []转换为Big Integer?

时间:2011-10-09 18:13:46

标签: java arrays biginteger

我想转换一个整数数组值,原来是字节。

2 个答案:

答案 0 :(得分:3)

首先,请确保您知道要解释int[]的格式。

每个int可以看作由四个字节组成,这些字节可以一起转换为BigInteger。细节是字节顺序 - 哪个字节最多,哪一个最不重要?

此外,您是否有签名或未签名的号码?

int转换为byte s(后者在BigInteger构造函数中使用)的简单方法是使用ByteBuffer并在其周围包装一个IntBuffer。

public BigInteger toBigInteger(int[] data) {
    byte[] array = new byte[data.length * 4];
    ByteBuffer bbuf = ByteBuffer.wrap(array);
    IntBuffer ibuf = bbuf.asIntBuffer();
    ibuf.put(data);
    return new BigInteger(array);
}

明显的适应性是设置bbuf的字节顺序,或使用另一个BigInteger构造函数(对于无符号)。

答案 1 :(得分:2)

那么,new BigInteger(byte[] val)呢?

引用我链接到的API文档:

  

将包含BigInteger的二进制补码二进制表示的字节数组转换为BigInteger。假设输入数组采用big-endian字节顺序:最重要的字节位于第0个元素中。