【问题标题】:Merging two byteArray in android在android中合并两个byteArray
【发布时间】:2011-03-25 11:19:28
【问题描述】:

我想通过蓝牙发送位图图像以及其他一些内容,如 char 和 int。问题是将这些东西转换成单字节数组。我尝试将其设置为两个字节数组并合并它们,但copyTo 不起作用。还有其他方法吗?

【问题讨论】:

  • 如果您可以显示代码,它可能会有所帮助
  • 字节[] 缓冲区;字节[]拇指钉;我只需要合并它并且必须传输字节数组..缓冲区由char,int组成,缩略图由位图组成..

标签: android bluetooth bytearray


【解决方案1】:

使用System.arraycopy 方法将一个数组复制到另一个数组中

int lenA = arrayA.length;
int lenB = arrayB.length;
byte[] outArray = new byte[lenA + lenB];

System.arraycopy (arrayA, 0, outArray, 0, lenA);
System.arraycopy (arrayB, 0, outArray, lenA, lenB);

我没有测试过,但应该可以。

编辑:

当然不建议将它用于大型阵列。您以这种方式将内存中的数据加倍。我不知道你究竟在用这些数据做什么,但如果可以的话,请改用流式传输。

【讨论】:

  • 我需要在 textView 中显示图像 tats it.. 流式传输?
  • ByteArrayInputStream, ByteArrayOutputStream - 取决于你想要什么。你问到合并两个字节数组。我不知道 TextView 对它有什么影响。
  • @dziobas 最后一行的第二个参数是要开始的源数组的索引,所以它不应该是0吗?即System.arraycopy (arrayB, 0, outArray, lenA, lenB);
  • @Bryan 不,这段代码将arrayA 复制到outArray,然后在lenAlenA 元素之后将arrayB 复制到arrayA 中。
  • @pawelzieba 是的,但 arrayB 从 0 开始,长度为 lenB。第二行不正确。它应该如 bmaupin 所示。您获取arrayB中的所有字节并将它们添加到outArray,因此所有字节意味着您从arrayB中的位置0开始,而不是您编写的位置lenA。请更正答案。
猜你喜欢
  • 2012-07-29
  • 2016-11-09
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多