从NodeJS返回二进制数据

3

我有一个名为ReadBinaryData()的函数,我想创建一个读取流来读取二进制数据,并通过回调将二进制数据返回给调用函数。在Node中似乎有几种不同的方法可以实现这一点,而且我已经阅读了关于如何实现它的矛盾信息。我认为我应该使用Buffer对象,但不确定如何使用。我有以下代码,但似乎没有正常工作。有什么建议吗?

function ReadBinaryData(successCallback){               
    var streamHandle = fs.createReadStream("PATH TO FILE",  {encoding: 'binary'});      
    var contentRead = '';       
   streamHandle.addListener('data', function(data) {            
        contentRead += data;                            
    });

   streamHandle.addListener('end', function(data) {                         
        successCallback(contentRead);       
    });     
};

当我记录输出时,我没有得到二进制数据,而是出现了乱码字符。如何输出二进制数据或验证输出确实是二进制数据?(请原谅我对二进制数据的理解不足) - Drake Amara
1个回答

1
我在5.x分支中使用了NodeJS Buffer。 我建议您查看那里的文档并仔细阅读。 那里有很多新的方法可以帮助您处理二进制流。 不过,二进制选项将在未来版本中被删除,因此您可能需要重新考虑您正在做什么以及为什么这样做。

http://nodejs.org/docs/v0.5.6/api/buffers.html

以下是一个关于缓冲区的示例用法,我在这段代码中使用的是5.x分支,有一个类似的方法称为writeUInt32LE,但用于二进制。还有相应的读取方法。如果你不能使用5.x分支,你可以看一下nodejs JavaScript库中的方法是如何将字符串转换为你想要的格式。

  var cur = this.network.ipInt;
  var bcast = this.broadcast.ipInt;
  var addresses = new Buffer((bcast-cur)*10);
  var offset = 0;
  while (cur < bcast){
    cur += 1;
    addresses.writeUInt32LE(cur,offset);
    offset+=10;
  }

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