开发者

How to convert int [] to Big Integer?

I would like to convert an integer array of values, which was ori开发者_开发知识库ginal were bytes.


First, make sure you know in which format your int[] is meant to be interpreted.

Each int can be seen as consisting of four bytes, and these bytes together can be converted to an BigInteger. The details are the byte order - which byte is the most and which one the least significant?

Also, do you have a signed or unsigned number?

A simple way to convert your ints to bytes (for latter use in a BigInteger constructor) would be to use ByteBuffer and wrap an IntBuffer around it.

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);
}

Obvious adaptions would be to set the byte order of bbuf, or use another BigInteger constructor (for unsigned).


Well, what about new BigInteger(byte[] val)?

To quote the API docs I linked to:

Translates a byte array containing the two's-complement binary representation of a BigInteger into a BigInteger. The input array is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜