我想转换一个整数数组值,原来是字节。
答案 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个元素中。