gpt4 book ai didi

Java 创建字节数组,其大小由 long 表示

转载 作者:IT老高 更新时间:2023-10-28 21:19:18 26 4
gpt4 key购买 nike

我正在尝试创建一个大小为 long 类型的字节数组。例如,将其视为:

long x = _________;
byte[] b = new byte[x];

显然你只能为字节数组的大小指定一个int

在有人问我为什么需要这么大的字节数组之前,我会说我需要封装我不写的消息格式的数据,其中一种消息类型的长度是无符号整数(long 在 Java 中)。

有没有办法创建这个字节数组?

我在想如果没有办法,我可以创建一个字节数组输出流并继续输入字节,但我不知道字节数组的大小是否有任何限制......

最佳答案

(对于 OP 来说可能有点晚了,但对其他人可能仍然有用)

不幸的是,Java 不支持超过 231-1 个元素的数组。 byte[] 数组的最大消耗为 2 GiB 空间,long[] 数组的最大消耗为 16 GiB。

虽然它可能不适用于这种情况,但如果数组将是 sparse ,您也许可以使用像 Map 这样的关联数据结构。将每个使用的偏移量匹配到适当的值。此外,Trove为存储原始值提供了比标准 Java 集合更节省内存的实现。

如果数组不是稀疏的,并且您确实需要内存中的整个 blob,您可能必须使用二维结构,例如使用 Map 匹配偏移量模 1024 到正确的 1024 字节数组。即使对于稀疏数组,这种方法也可能更节省内存,因为相邻的填充单元可以共享相同的 Map 条目。

关于Java 创建字节数组,其大小由 long 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1071858/

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