从ArrayOfByte中按Byte提取字节

时间:2013-04-23 09:03:48

标签: java android

我有一个像这样的ArrayOfByte:

byte[] arrayOfByte = new byte[1024]

它随机包含1,2,3,4的数组。

假设其中有大约100个字节数据,

我的问题是如何从中提取逐字节数据: 我使用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]

1 个答案:

答案 0 :(得分:6)

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

  

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

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)的初始索引必须介于0和original.length之间(包括0和original.length)。原始[from]的值放在副本的初始元素中(除非从== original.length或从==到)。原始数组中后续元素的值将放入副本中的后续元素中。范围(to)的最终索引(必须大于或等于from)可能大于original.length,在这种情况下,(byte)0放在索引大于或等于的副本的所有元素中到original.length - 来自。返回数组的长度为 - from。

byte[] newByteArray = Arrays.copyOfRange(arrayOfByte, startIndex, endIndex);