gpt4 book ai didi

c++ - 将二进制字符串/文件内容从 c++ 传递到 Node js

转载 作者:行者123 更新时间:2023-11-28 05:01:24 52 4
gpt4 key购买 nike

我正在尝试使用 node-gyp 库将二进制文件的内容从 C++ 传递到 Node 。我有一个使用 .fit 格式创建二进制文件的过程,我需要将文件的内容传递给 js 来处理它。因此,我的第一个方法是将文件的内容提取到一个字符串中,然后尝试像这样将其传递给 Node 。

   char c;
std::string content="";
while (file.get(c)){
content+=c;
}

我正在使用以下代码将其传递给 Node

v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(args.GetIsolate(), (void*)content.data(), content.size());
args.GetReturnValue().Set(ab);

在 Node a 中获取一个 arrayBuffer,但是当我将内容打印到文件时,它与显示 c++ cout 的文件不同。

如何才能成功传递二进制数据?

谢谢。

最佳答案

  1. 最好的方法可能是将数据写入二进制磁盘文件。用C++写入磁盘;在 NodeJS 中从磁盘读取。

  2. 非常重要的是,确保指定BINARY MODE

    例如:

    myFile.open ("data2.bin", ios::out | ios::binary);

  3. 不要使用“字符串”(至少不要,除非你想 uuencode)。使用缓冲区。这是一个很好的例子:

How to read binary files byte by byte in Node.js

var fs = require('fs');

fs.open('file.txt', 'r', function(status, fd) {
if (status) {
console.log(status.message);
return;
}
var buffer = new Buffer(100);
fs.read(fd, buffer, 0, 100, 0, function(err, num) {
...
});
});
  1. 您可能还会发现这些链接有帮助:

附录:

  • OP 澄清说他正在考虑使用 C++ 作为 NodeJS 附加组件(而不是独立的 C++ 程序。

  • 因此,使用缓冲区绝对是一种选择。这是一个很好的教程:

https://community.risingstack.com/using-buffers-node-js-c-plus-plus/

如果您选择走这条路,我肯定会先下载示例代码并使用它,然后再在您自己的应用程序中实现缓冲区。

关于c++ - 将二进制字符串/文件内容从 c++ 传递到 Node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849078/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com