繁体   English   中英

从ArrayOfByte中逐字节提取字节

[英]extracting Byte by Byte from an ArrayOfByte

我有一个像这样的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...像这样

更新:谢谢苏米特·辛格,它工作了..

现在假设我们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]

您可以使用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扩展原语转换
  • 您可以使用ByteBuffer ,它是NIO的一部分,如下所示:

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

回答2:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM