代码之家  ›  专栏  ›  技术社区  ›  masmic

调整字节数组大小

  •  1
  • masmic  · 技术社区  · 11 年前

    我有一个字节[]是这样声明的:

    byte[] buffer;
    buffer = new byte[128];
    

    然后,我通过蓝牙获得接收到的数据的大小:

    bytes = GlobalVar.mmInStream.read(buffer);
    

    Bytes是接收到的数据的大小。我需要的是将缓冲区的大小调整为包含数据的大小。

    2 回复  |  直到 11 年前
        1
  •  2
  •   pocmo    11 年前

    由于无法调整数组的大小(它们是不可变的),因此需要创建一个副本:

    byte[] data = new byte[bytes]
    System.arraycopy(buffer, 0, data, 0, bytes)
    

    然而,继续使用肯定更有效 buffer 一直读到 bytes 无论出于什么原因你需要它。

        2
  •  1
  •   netchkin    11 年前

    您需要为具有适当大小的缓冲区重新分配内存,因为默认情况下数组的大小是固定的。 编辑: 如果缓冲区已经包含数据,并且您不想丢失它们,您也可以使用:

    buffer = Arrays.copyOf(buffer, newsize);
    

    将当前缓冲区数据移动到新分配的内存中。