繁体   English   中英

在 Node.js 中缓冲的二进制字符串

[英]String of Binary to Buffer in Node.js

我试图通过将字符流解析为 UTF-16 编码来将01的字符串转换为等效的Buffer

例如:

var binary = "01010101010101000100010"

其结果将是以下缓冲区

<Buffer 55 54>

请注意Buffer.from(string, "binary")无效,因为它创建了一个缓冲区,其中每个单独的01被解析为它自己的拉丁语一字节编码字符串。 从 Node.js 文档:

'latin1':一种将 Buffer 编码为单字节编码字符串的方法(如 IANA 在 RFC 1345,第 63 页中定义的那样,作为 Latin-1 补充块和 C0/C1 控制代码)。

'binary':'latin1' 的别名。

  • 使用 "".match 查找所有 16 位组。
  • 使用 parseInt 将二进制字符串转换为数字
  • 创建一个 Uint16Array 并将其转换为 Buffer

在节点 10.x 上测试

function binaryStringToBuffer(string) {
    const groups = string.match(/[01]{16}/g);
    const numbers = groups.map(binary => parseInt(binary, 2))

    return Buffer.from(new Uint16Array(numbers).buffer);
}

console.log(binaryStringToBuffer("01010101010101000100010"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM