在Node.js中生成和写入二进制数据到流的过程

3

我希望在我的Node.js应用程序中生成一些二进制数据,然后将其写入HTTP响应以供客户端下载。我目前的同一个应用程序实现是使用Python,它使用struct模块实现此功能。例如:

import struct
# ...
s = 'Filename header'
s_binary = struct.pack('15s',s)
# ...

此外,我如何在Node.js中将数字转换为二进制? 我在Python中的做法是:
# To convert a float into four byte binary representation in Python.
import struct
num_binary = struct.pack('f',23.33)

我该如何在Node.js中做同样的事情呢?

目前我找到的最佳解决方案是将Python的struct库直接移植到Node.js中,这个库叫做jspack

2个回答

1
var s="Filename header";
var s_binary=new Buffer(15);
for(var i=0;i<s_binary.length;i++) {
    s_binary[i]=0;
}
s_binary.write(s);
// Now you can write s_binary to a stream.

好的解决方案。如果您打算立即填充缓冲区,则不需要使用null进行填充。 - JasonWoof
你可以将缓冲区写入流中,例如在http示例中,你可以使用res.end(myBuffer)。如果只想发送缓冲区的前8个字节:res.end(myBuffer.slice(0, 8))。 - JasonWoof
此外,我最近发现您可以直接执行以下操作:var s_binary = new Buffer(s); - JasonWoof
@JasonWoof:我认为“文件名标题”只是一个占位符,可能会根据用户输入而变化。 - icktoofay
@icktoofay:依我看,你要么确定所需缓冲区的确切大小,然后将其设为该大小,要么创建一个比实际需要大的缓冲区,并跟踪使用了多少。您不应输出未使用的部分,因此我不认为在该部分中存在哪些字节有任何影响。 - JasonWoof
显示剩余5条评论

1
你可以看一下Bison。它类似于JSON,但可以创建二进制数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接