我在 C++ 变量缓冲区中有一个二进制数据,如下所示:
int len = 39767;
uint16_t * buffer = (uint16_t) malloc(len);
FILE * fp = fopen("rahul.jpg", "rb"); // size of file is 39767 byte.
fread(buffer, len, 1, fp);
fclose(fp);
fp = fopen("rahul3.jpg", "wb");
fwrite(buffer, len, 1, fp); // Here it is written correct.
fclose(fp);
我想将此缓冲区传递给 Node.js 并写入文件。我使用下面的行将其转换为本地,然后包装为一个对象:
Local<String> str = Nan::New(buffer).ToLocalChecked();
return scope.Escape(str);
但是,在 node.js 中,当我检查接收数据的长度时,它只打印 9 并且值似乎已损坏。
console.log(data);
console.log("len = " + data.length );
fs.writeFileSync('rahul2.jpg', data, 'binary');
此处 rahul2.jpg 已损坏,只有 9 个字节。我们如何从 node.js 代码中获取 rahul2.jpg 与 c++ 中的 rahul.jpg 相同?我们应该使用哪个 Nan::New() 来传递不受影响的二进制数据?请帮忙。谢谢。