You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取字节数组的第一个和第二个元素?

获取字节数组的第一个和第二个元素

你完全不需要通过Arrays.toString()生成的字符串去提取元素——直接操作原始的byte[]数组才是最直接、高效的方式,而且能避免解析字符串带来的额外麻烦和错误风险。

具体操作步骤:

  • 先做安全校验:在访问数组元素前,一定要确保数组不为null,并且长度至少有2个元素,防止出现NullPointerException或ArrayIndexOutOfBoundsException。
  • 通过索引直接访问:Java数组的索引从0开始,所以第一个元素是manufacturerData[0],第二个元素是manufacturerData[1]。
  • 处理字节符号问题(可选):如果你的设备返回的是无符号字节值,记得和0xFF做按位与操作,把有符号的byte转成无符号的int(Java的byte是有符号类型,范围是-128到127)。

完整代码示例:

ScanRecord scanRecord = result.getScanRecord();
assert scanRecord != null;
byte[] manufacturerData = scanRecord.getManufacturerSpecificData(0x0590);

// 安全校验,避免数组为空或长度不足的情况
if (manufacturerData != null && manufacturerData.length >= 2) {
    // 获取第一个元素(有符号byte类型)
    byte firstByte = manufacturerData[0];
    // 转成无符号int值(如果需要)
    int firstUnsignedValue = firstByte & 0xFF;
    
    // 获取第二个元素(有符号byte类型)
    byte secondByte = manufacturerData[1];
    int secondUnsignedValue = secondByte & 0xFF;
    
    // 后续按需使用这些值即可
    System.out.println("第一个元素(有符号byte):" + firstByte);
    System.out.println("第一个元素(无符号int):" + firstUnsignedValue);
    System.out.println("第二个元素(有符号byte):" + secondByte);
    System.out.println("第二个元素(无符号int):" + secondUnsignedValue);
} else {
    // 处理数据异常的情况
    System.out.println("制造商数据为空或长度不足2个元素");
}

为什么不推荐解析Arrays.toString()的结果?

Arrays.toString(manufacturerData)生成的是类似[10, -5]这样的格式化字符串,如果你要从中提取数值,需要做字符串切割、转义处理,不仅代码繁琐,还容易因为元素符号、格式变化导致解析错误,完全没必要多此一举。

内容的提问来源于stack exchange,提问作者diamond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:46:38