2

我有一个这样的 ArrayOfByte:

byte[] arrayOfByte = new byte[1024]

它里面随机包含1,2,3,4的数组..

假设里面有大约 100 Byte 的数据,

我的问题是如何从中提取逐字节数据:我使用Log.d(TAG, "arrayOfByte :"+arrayOfByte);它会显示arrayOfByte :[B@2b052c60

现在我想分别提取每个字节,display: 1,1,2,1,3,3,3,2,2,1,4,4,4,2,3,3,3...就像这样

更新: 感谢 Sumit Singh,它有效..

现在假设我们display: [1,1,1,2,3,2,2,2,1,1,1,0,0,0,0,0,0,0]

问题1:如何将这些值放入一些int[] series

问题2:我可以从中删除一些起始元素并制作它吗[2,2,1,1,1,0,0,0,0,0,0,0]

4

1 回答 1

6

您可以使用Arrays.toString(byte[] a)

返回指定数组内容的字符串表示形式。字符串表示由数组元素的列表组成,括在方括号 ("[]") 中。相邻元素由字符“,”(逗号后跟一个空格)分隔。元素被转换为字符串 by String.valueOf(byte)。如果 a 为空,则返回“空”。

Arrays.toString(arrayOfByte) 

它将返回您的字节数组的字符串表示形式,1,1,2,1,3,3,3,2,2,1,4,4,4,2,3,3,3例如

Log.d(TAG, "arrayOfByte :"+ Arrays.toString(arrayOfByte));

为下一个问题更新

答案 1:

  • 有很多方法可以做到这一点,最简单的是遍历每个字节数组元素并将原语从 char 扩大到 int:JLS 5.1.2 Widening Primitive Conversion
  • 您可以使用作为NIO一部分的ByteBuffer ,如下所示:

    int[] intArray = ByteBuffer.wrap(arrayOfByte).asIntBuffer().array()

答案 2:

对于这个问题也有很多方法,我建议使用Arrays.copyOfRange。它将返回具有给定范围的新数组。

将指定数组的指定范围复制到新数组中。范围 (from) 的初始索引必须介于零和 original.length 之间,包括两者。original[from] 的值被放入副本的初始元素中(除非 from == original.length 或 from == to)。原始数组中后续元素的值被放入副本中的后续元素中。范围(to)的最终索引,必须大于等于from,可能大于original.length,这种情况下(byte)0被放置在索引大于等于的副本的所有元素中到 original.length - 从。返回数组的长度将是 to - from。

byte[] newByteArray = Arrays.copyOfRange(arrayOfByte, startIndex, endIndex);
于 2013-04-23T09:06:05.487 回答