Articles of 缓冲区

nodejs将原始图像数据写入jpeg文件?

我从获取请求获取数据。 数据(在响应的主体中)看起来像这样: … ÿÀ " ÿÄ ÿÄ N !1"AQa2q¡#BR±ð3brS²ÁÂÑá$ñCDTst¢³&45dÃÒÿÄ ÿÄ – !1A"Qa¡ðq±ÁÑ2áÿÚ ? û." """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """R1º#ª¥7Jíî½M6îNö ]·!]=Fvß`7~qÆee²%·JokkZüCbìþ<ù{ã9öùË®´(%A,Ià 2I?t×bn6wÆù¥V 2SÀ><k5ºÙØ92EhÎçü¨/aÝ!ã|ñþ¥ñßT}U«¦ÒÚµ«xuÕfƳ KØ {ù{ð$·DúBMZÆcp}´R|Mä2ó8üg)·ùôfõ$zXiRÞü}óÆ>,êÚûíR5ý:\ ….. 响应标题如下所示: HTTP/1.1 200 OK Content-Length: 26965 Access-Control-Allow-Origin: * Content-Type: image/jpeg; charset=UTF-8 […]

NodeJS:如何释放在V8内存堆外部分配的缓冲区

我有一个应用程序,我从服务器上顺序下载MP3文件,暂时将它们存储在我的服务器中,然后直接将它们stream式传输到客户端,如下所示: function downloadNextTrack(){ var request = http.get('http://mp3server.com', function(response){ response.on('data', function(data) { fs.appendFile('sometrack.mp3', data, function (err) {}); }); response.on('end', function(){ streamTrack('sometrack.mp3'); } }); }; var clients = []; // client response objects are pushed to this array when they request the stream through a route like /stream.mp3 var stream; function streamTrack(track){ stream = fs.createReadStream(track); stream.on('data', function(data){ […]

如何解码“二进制”编码的string到原始二进制缓冲区?

NodeJS的文档强调, binarystring编码是非常不鼓励的,因为它将在未来某个时候被丢弃。 不过,我试图用node-imagemagick模块生成图像缩略图,它只能输出binary编码的string。 我的最终目标是将生成的缩略图作为BLOB提交到SQLite3数据库(我正在使用node-sqlite3 ),所以我想我需要缩略图作为二进制Buffer对象。 如何直接解码node-imagemagick的binary编码输出到一个原始的二进制缓冲区(不只是一个包含binary编码的string的缓冲区)? 我不喜欢使用base64 …

只能从node.js中的套接字读取前N个字节

var server = net.createServer(function(c) { //… c.on('data', function(data) { //The data is all data, but what if I need only first N and do not need other data, yet. c.write(data); }); //… }; 有没有办法只读取定义的部分数据? 例如: c.on('data', N, function(data) { //Read first N bytes }); 其中N是我期望的字节数。 所以callback只有M个字节中的N个。 解决办法是(感谢mscdex): c.on('readable', function() { var chunk, N = 4; […]

如何将JavaScript对象转换为节点缓冲区?

我在我的节点服务器上使用Buffer ,在我的Java客户端上使用Buffer 。 为了节省字节的目的,我正在寻找发送我的数据到服务器通过websockets作为二进制相对于JSON。 所以,如果我有[ 5, false, 55, "asdf" ]的Javascript对象,我想在发送之前将其转换为客户端上的缓冲区。 也许这样的事情: object.toBuffer('int16', 'bool', 'int16', 'utf8'); 并在服务器上读取它像这样: var obj = buffer.read('int16', 'bool', 'int16', 'utf8'); 我正在看当前的解决scheme,看起来我可能只需要做很多concat ing,指定字节偏移量/长度,从int转换为布尔值等。 有没有更好的办法? 编辑:这是我觉得你现在必须这样做。 我想我的问题只是它太冗长和容易出错,我正在寻找一个更简洁和优雅的方式来做到这一点,因为这个操作将在我的代码中的许多不同的地方执行。 // On client for [ 5, false, 55, "test" ] const writeFirst = Buffer.allocUnsafe(2); writeFirst.writeInt16LE(5, 0); const writeSecond = Buffer.allocUnsafe(1); writeSecond.writeUInt8(0); const writeThird = Buffer.allocUnsafe(2); writeThird.writeInt16LE(55, 0); […]

JavaScript:以整数forms读取3个字节的缓冲区

比方说,我有一个hex数据stream,我想分成3个字节的块,我需要读取作为一个整数。 例如:给定一个hexstring01be638119704d4b9a我需要读取前三个字节01be63并读取它作为整数114275 。 这是我得到的: var sample = '01be638119704d4b9a'; var buffer = new Buffer(sample, 'hex'); var bufferChunk = buffer.slice(0, 3); var decimal = bufferChunk.readUInt32BE(0); readUInt32BE完美适用于4字节的数据,但在这里我显然得到: RangeError: index out of range at checkOffset (buffer.js:494:11) at Buffer.readUInt32BE (buffer.js:568:5) 如何正确读取3个字节的整数?

如何在nodejs Buffer中存储整数?

nodejs Buffer是相当的膨胀。 但是,它似乎适用于存储string。 构造函数可以接受一个string,一个字节数组,或一个字节的大小来分配。 我正在使用Node.js的版本0.4.12,我想要在缓冲区中存储一个整数。 不是integer.toString() ,而是整数的实际字节。 有没有一个简单的方法来做到这一点,而不是循环遍历整数,并做一些有点twiddling? 我可以做到这一点,但是我觉得这是别人必须面对的问题。

是什么让node.js SlowBuffers“慢”?

我使用node.js为一些存储在SQLite数据库中的PNG图像提供二进制BLOB。 这些图像很小,平均9500字节。 我正在使用sqlite3 npm软件包 ,它似乎将返回二进制BLOB对象作为SlowBuffers 。 我的node.js服务在内存中保存这些SlowBuffers来缓解IO延迟,像这样服务它们: response.send(slowBuffer); 看起来, SlowBuffer有一个类似于Buffer的接口; 转换成Buffer是微不足道的: var f = function(slowBuffer) { var buffer = new Buffer(slowBuffer.length); slowBuffer.copy(buffer); return buffer; } 我应该将这些SlowBuffers转换为Buffers ? 帮我理解为什么他们被称为“缓慢”的缓冲区。

nodejs中的base64 JSON编码string

如何在nodejs中创buildbase64 JSON编码的string? 我试了这个,但没有奏效。 var buff = new Buffer({"hello":"world"}).toString("base64"); 是这个吗? var buff = new Buffer(JSON.stringify({"hello":"world"})).toString("base64");

将nodejs的缓冲区转换成浏览器的javascript

我将我的代码从Node.js转换为浏览器的javascript,但是我在node.js中的缓冲区有问题。 我怎样才能在Javascript中使用它们? 这是一个例子: new Buffer("foo", encoding='utf8') <Buffer 66 6f 6f> 我需要在JavaScript中将[66,6f,6f]转换为“foo”,反之亦然。 我怎样才能做到这一点? 注意:这必须在没有Node.js的情况下完成。