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

JavaScript如何将字符串转为字节数组 等效给定Python代码效果

JavaScript实现与Python代码完全等价的十六进制字符串转字节数组

逻辑对应说明

  • Python中bytearray.fromhex()会自动忽略输入十六进制字符串内的所有空白字符,每2位十六进制字符解析为1个0-255范围的无符号字节,最终得到可变字节数组
  • JS中使用Uint8Array对应Python的bytearray类型,实现逻辑完全对齐Python原生方法的行为,包括异常校验、大小写兼容、空白忽略规则

实现代码

function hexToBytearray(hexStr) {
  // 移除所有空白字符,对齐Python fromhex自动忽略空格、换行、制表符的行为
  const cleanHex = hexStr.replace(/\s+/g, '');
  // 对齐Python奇数长度十六进制串的报错逻辑
  if (cleanHex.length % 2 !== 0) {
    throw new Error('Odd-length hex string');
  }
  const byteLen = cleanHex.length / 2;
  const result = new Uint8Array(byteLen);
  for (let i = 0; i < byteLen; i++) {
    // 逐两位解析十六进制,自动兼容大小写
    result[i] = parseInt(cleanHex.slice(i * 2, i * 2 + 2), 16);
  }
  return result;
}

// 与Python示例中完全一致的输入字符串
const string2 = '68 03 01 00 22 aa 04 9e 04 4a c2 01 4a 3c 4a c2 01 4a 3c 4a 3c 4a 3c 4a 3c 4a c2 01 4a c2 01 4a 3c 4a 3c 4a c2 01 4a 3c 4a 3c 4a 3c 4a 3c 4a 3c 4a c2 01 4a 3c 4a 3c 4a 3c 4a 3c 4a 3c 49 c2 01 49 c2 01 49 c2 01 4a c2 01 49 c2 01 4a c2 01 4a c2 01 49 c2 01 4a c2 01 4a c2 01 4a c2 01 4a c2 01 4a c2 01 4a c2 01 4a c2 01 4a c2 01 4a c2 01 4a 3c 4a c2 01 4a 3c 4a 3c 4a c2 01 4a c2 01 49 c2 01 4a c2 01 4a 84 05 ab 04 9e 04 4a 3c 49 c3 01 47 3f 47 c5 01 47 c5 01 4a c2 01 4d bf 01 49 3d 48 3d 46 c6 01 44 c8 01 44 42 44 c8 01 47 c5 01 47 c5 01 47 c5 01 47 c5 01 46 3f 46 c6 01 46 c6 01 46 c6 01 46 c6 01 46 c6 01 46 3f 46 30 46 40 46 40 46 40 46 40 46 40 46 40 45 40 46 40 45 40 45 40 45 40 45 43 42 43 42 43 42 43 42 ca 01 42 44 42 ca 01 41 cb 01 41 44 41 44 41 44 41 44 41 45 16';

// 等价于Python的 data1 = bytearray.fromhex(string2)
const data1 = hexToBytearray(string2);

// 复现Python中循环处理每个字节的逻辑
for (const data of data1) {
  // 等价于 "{0:02x}".format(data),转为两位小写十六进制字符串
  const hexByteStr = data.toString(16).padStart(2, '0');
  // 等价于 bytearray.fromhex(hex_byte),生成单字节的字节数组
  const hex_byte = hexToBytearray(hexByteStr);
  // 按需使用hex_byte即可
}

等价性说明

  • 解析出的字节数组长度、每个位置的字节值与Python运行结果完全一致
  • 支持任意空白分隔的十六进制串,不要求固定单空格分隔
  • 自动处理0值等需要补前导零的场景,格式化输出的十六进制串为小写,和Python02x格式化规则完全对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:33:21