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

Java中如何将元素为单字节十六进制值的字符串数组转换为byte数组

Java端十六进制字符串数组转byte数组实现

直接给可直接复用的工具方法:

public byte[] hexStrArrToByteArray(String[] hexStrArr) {
    int arrLen = hexStrArr.length;
    byte[] resultBytes = new byte[arrLen];
    for (int i = 0; i < arrLen; i++) {
        // radix指定为16,按十六进制规则解析字符串为int后强转byte
        resultBytes[i] = (byte) Integer.parseInt(hexStrArr[i], 16);
    }
    return resultBytes;
}

你示例中的输入new String[]{"52", "0"}调用该方法后,得到的byte数组就是目标值[82, 0],和RN侧原始Uint8Array完全一致,不会丢失空字节。

如果需要兼容非法输入、空输入的场景,可以补充异常处理逻辑,参考实现如下:

public byte[] hexStrArrToByteArray(String[] hexStrArr) {
    // 空输入直接返回空数组
    if (hexStrArr == null || hexStrArr.length == 0) {
        return new byte[0];
    }
    int arrLen = hexStrArr.length;
    byte[] resultBytes = new byte[arrLen];
    for (int i = 0; i < arrLen; i++) {
        try {
            // trim处理掉字符串前后可能存在的空格
            String hex = hexStrArr[i].trim();
            resultBytes[i] = (byte) Integer.parseInt(hex, 16);
        } catch (NumberFormatException e) {
            // 非法十六进制格式可按业务需求自定义处理,此处示例默认填0
            resultBytes[i] = 0;
        }
    }
    return resultBytes;
}

注意事项

  • 该方法天然兼容大小写十六进制字符,输入"a"和"A"都会被解析为十进制10对应的byte值
  • 你当前场景是每个字符串仅对应单字节十六进制,无需额外处理多字节拼接逻辑,直接逐个解析即可
  • 该方案完全避开了RN与Native交互时字符串空字符被截断的问题,是BLE二进制数据传输场景的通用解决方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:07