如何将 int[] 转换为大整数?

发布于 2024-12-09 04:55:57 字数 26 浏览 0 评论 0原文

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

I would like to convert an integer array of values, which was original were bytes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

翻了热茶 2024-12-16 04:55:57

首先,确保您知道 int[] 将以哪种格式进行解释。

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

另外,你有签名或未签名的号码吗?

int 转换为 byte(以便稍后在 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 构造函数(对于无符号)。

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).

浪荡不羁 2024-12-16 04:55:57

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

引用我链接到的 API 文档:

将包含 BigInteger 的补码二进制表示形式的字节数组转换为 BigInteger。假定输入数组采用大端字节顺序:最高有效字节位于第零个元素。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文