Javascript 要在Node.js中缓冲的二进制字符串
我试图通过将字符流解析为UTF-16编码,将Javascript 要在Node.js中缓冲的二进制字符串,javascript,node.js,binary,buffer,Javascript,Node.js,Binary,Buffer,我试图通过将字符流解析为UTF-16编码,将0和1字符串转换为等效的Buffer 例如: var binary=“01010101000100010” 其结果将是以下缓冲区 <Buffer 55 54> 请注意Buffer.from(string,“binary”)无效,因为它创建了一个缓冲区,其中每个0或1被解析为自己的拉丁单字节编码字符串。从Node.js文档中: “latin1”:将缓冲区编码为单字节编码字符串的一种方式(如RFC 1345第63页IANA中的定义,为L
0
和1
字符串转换为等效的Buffer
例如:
var binary=“01010101000100010”
其结果将是以下缓冲区
<Buffer 55 54>
请注意Buffer.from(string,“binary”)
无效,因为它创建了一个缓冲区,其中每个0
或1
被解析为自己的拉丁单字节编码字符串。从Node.js文档中:
“latin1”:将缓冲区编码为单字节编码字符串的一种方式(如RFC 1345第63页IANA中的定义,为Latin-1补充块和C0/C1控制代码)
“binary”:latin1的别名
- 使用“.match”查找所有16位的组
- 使用parseInt将二进制字符串转换为数字
- 创建UINT16阵列并将其转换为缓冲区
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"))
- 使用“.match”查找所有16位的组
- 使用parseInt将二进制字符串转换为数字
- 创建UINT16阵列并将其转换为缓冲区
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"))
您可以从该()生成一个十六进制字符串,并使用
Buffer.from(hexStr,“HEX”)
。顺便说一下,您的示例是错误的,0101010101010100
是5554
,其中有7个额外的位。您可以从中()生成十六进制字符串,并使用Buffer.from(hextstr,“HEX”)
。顺便说一句,您的示例是错误的,0101010100
是5554
,其中有7个额外的位。