gpt4 book ai didi

java - 将 int[] 转换为 byte[] 而不创建新对象

转载 作者:行者123 更新时间:2023-12-02 09:36:11 25 4
gpt4 key购买 nike

我在java中有一个int[],我想将其转换为byte[]。

现在通常的方法是创建一个大小为 int 数组大小 4 倍的新 byte[],并将所有 int 逐字节复制到新的字节数组中。

然而,这样做的唯一原因是 Java 的类型安全规则。int 数组已经是字节数组。只是 java 不允许将 int[] 转换为 byte[],然后将其用作 byte[]。

有没有什么办法,也许使用jni,使 int 数组看起来像 java 的字节数组?

最佳答案

没有。无法使用 native Java 数组接口(interface)实现对象。

在我看来,您想要一个对象包装您的 int[],并提供以字节数组方式访问它的方法。例如

public class ByteArrayWrapper {
private int[] array;

public int getLength() {
return array.length * 4;
}

public byte get(final int index) {
// index into the array here, find the int, and then the appropriate byte
// via mod/div/shift type operations....
int val = array[index / 4];
return (byte)(val >> (8 * (index % 4)));
}
}

(以上内容未经测试/编译等,取决于您的字节排序要求。这纯粹是说明性)

关于java - 将 int[] 转换为 byte[] 而不创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1322819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com