我有一个像这样的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]
答案 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:
您可以使用属于 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);