【问题标题】:What is the maximum amount of elements that we can store in Byte array in Java?我们可以在 Java 的 Byte 数组中存储的最大元素数量是多少?
【发布时间】:2023-03-09 15:45:02
【问题描述】:

我正在处理水印,因此我将 PNG 图像转换为字节数组,然后在我的代码中对该字节数组的值进行硬编码。

但是当我使用 100x100 的图像执行此操作时,它会给出一个错误,即代码太大,据我所知,此错误是由于支持的字节数组元素的大小实际上仅为 64kb。

请告诉我是否有更好的方法来做这件事?

【问题讨论】:

  • 但是一个像素!= 一个字节。 PNG 图像每个像素有 4 个值(R、G、B、Alpha)。然而,这仍然小于 64k。
  • 你在说什么?字节[]字节=新字节[长度];长度为 int。 bytes.length 也返回一个 int。所以你可以把兆字节放在一个字节数组中。
  • code is too large?你的意思是“数组太大”?
  • 很可能是转换代码出错。
  • 你可以把2GB的数据放在一个数组里

标签: java android bytearray


【解决方案1】:

数组中元素的最大数量为 Integer.MAX_VALUE 或大约 20 亿个,无论数组的类型如何。

当您在 Java 中初始化一个数组时,它会在代码中这样做,一次一个元素。假设您不会在 Java 中初始化大型数组。包括用于初始化类或构造函数的静态初始化块在内的任何方法的限制都是 64K,而您似乎正在达到这个限制。

有两种解决方法;

  • 从文件中读取数据。然后您可以拥有最大 2 GB - 1 的数组。
  • 将数据存储在未以这种方式初始化的字符串中。您可以使用s.getBytes(StandardCharsets.ISO_8859_1) 将数据转换为字节[]

最好的选择是将数据存储在文件中。

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多