【问题标题】:working with byte array data in node.js and how to process it在 node.js 中处理字节数组数据以及如何处理它
【发布时间】:2014-01-07 23:52:12
【问题描述】:

我需要从套接字中获取整个字节数组数据,然后我需要将其插入到数据库中的 BLOB 中。不要问我为什么不格式化字节数组中的数据,因为我需要使用那个结构。

我将字节数组数据存储到 js 数组中。我试图将它存储在缓冲区对象中,但是当我尝试将字节数组数据写入缓冲区时出现错误,因为它可以转换它。

我的问题是如何在 js 中使用字节数组最简单的方法。 我有以下代码:

var buff =[];
sock.on('data', function(data) {
    buff.push(data);
})

sock.on('end', function() {
    console.log(data) // [<Byte Array>,<Byte Array>, ...]
});

基本上我想将我的数据插入为 [] 而不是 [,, ...]。我的问题的最佳解决方案是什么?

【问题讨论】:

  • 您的示例代码的语法无效(buff.push[data]),您的问题含糊不清。您能否发布代码中尝试将数据存储在数据库中的部分,并解释您期望发生什么以及会发生什么?
  • 我修正了错字...正如我所说我想将字节数组存储到缓冲区中,然后将其转储到数据库中...我现在不能这样做,因为我得到了来自流的字节数组块的数组...我希望整个字节数组成 1 个单独的块,正如我所说的

标签: javascript node.js bytearray


【解决方案1】:

根据您的数据库接口,您可能能够将 JS 数组的每个元素作为单独的块进行流式传输。

[更新] 看起来 node.js 现在提供了一个Buffer.concat(...) 方法来将一堆缓冲区连接成一个缓冲区(基本上取代了我在下面提到的“buffertools”库)。

var buffers = [];
sock.on('data', function(data) {
  buffers.push(data);
}).on('end', function() {
  var bytes = Buffer.concat(buffers); // One big byte array here.
  // ...
});

[Original] 或者,您可以使用buffertools 模块将所有块连接到一个缓冲区中。例如:

var buffertools = require('buffertools');
var buff = new Buffer();
sock.on('data', function(data) {
  buff = buff.concat(data);
}).on('end', function() {
  console.log(buff); // <Byte Array>
});

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2011-05-16
    • 2023-03-24
    • 1970-01-01
    • 2019-06-28
    相关资源
    最近更新 更多