调整字节数组大小

时间:2013-09-13 09:54:20

标签: android arrays bluetooth byte

我用这样的方式声明了一个byte []:

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

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

bytes = GlobalVar.mmInStream.read(buffer);

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

2 个答案:

答案 0 :(得分:2)

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

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

然而,继续使用buffer并且只是在bytes之前阅读它,无论出于何种原因,您都需要阅读它。

答案 1 :(得分:0)

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

buffer = Arrays.copyOf(buffer, newsize);

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