Node的Buffer.from(string, 'binary')对应的Deno等效实现是什么?
Deno 等效 Node.js
Buffer.from(string, "binary") 实现方案 原理说明
TextEncoder 采用 UTF-8 编码规则 转换字符串,对于码值大于 0xFF 的字符会生成多字节序列,和 Node.js binary 编码逻辑完全不同。
Node.js 中 Buffer.from(string, "binary") 的核心逻辑是:逐字符取 Unicode 码点的低 8 位作为单个字节,等价于 Latin-1 编码映射,不会做多字节转换。
等效实现代码
// Deno 侧完全等效的转换函数 function bufferFromBinary(str) { const uint8 = new Uint8Array(str.length); for (let i = 0; i < str.length; i++) { uint8[i] = str.charCodeAt(i) & 0xFF; } return uint8; }
验证测试
替换示例代码中的 TextEncoder 逻辑即可:
const str = "ºRFl¶é(÷LõÎW0 Náò8ìÉPPv\0"; const bytes = bufferFromBinary(str); console.log(crypto.createHash("sha256").update(bytes).digest("hex"));
运行后输出结果为 fb6d4a2f86e91b13fe2d5a6d2e6ebb9b6f66e18a733b68acbf9ac3c5e56571d0,和 Node.js 侧输出完全一致。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

