Python中b'字符串'的Node.js等效实现?给定Salt的转换问题
Python Salt的Node.js等效写法
你的问题出在编码解析方式的误解上:
- Python的
b"xxx"语法是将字符串中的每个字符转换为对应的ASCII/UTF-8字节(比如字符"0"对应字节0x30) - 你之前用
Buffer.from(..., "hex")是把字符串当成十六进制字节序列解析(比如字符串"00"对应单个字节0x00),这和Python的行为完全不同。
正确的Node.js写法
直接使用默认编码(UTF-8)转换字符串为Buffer,和Python的b""行为一致:
const salt = Buffer.from("0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526");
验证一致性
- Python侧验证代码:
salt = b"0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526" # 打印前5个字节,对应字符"0"的ASCII码48 print(list(salt[:5])) # 输出: [48, 48, 48, 48, 48]
- Node.js侧验证代码:
const salt = Buffer.from("0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526"); // 打印前5个字节,和Python输出完全一致 console.log([...salt.slice(0, 5)]); // 输出: [48, 48, 48, 48, 48]
内容的提问来源于stack exchange,提问作者Filipe Aleixo
相关产品推荐
相关产品推荐

