Tag: 缓冲区

如何解码“二进制”编码的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的情况下完成。

使用Node.js将二进制数据推送到Amazon S3

我正在尝试使用Node.js将图像上传到Amazon S3存储桶。 最后,我希望能够将图像上传到S3,然后能够访问该S3 URL并在浏览器中查看图像。 我正在使用一个Curl查询来执行一个HTTP POST请求与图像作为正文。 curl -kvX POST –data-binary "@test.jpg" 'http://localhost:3031/upload/image' 然后在Node.js端,我这样做: exports.pushImage = function(req, res) { var image = new Buffer(req.body); var s3bucket = new AWS.S3(); s3bucket.createBucket(function() { var params = {Bucket: 'My/bucket', Key: 'test.jpg', Body: image}; // Put the object into the bucket. s3bucket.putObject(params, function(err) { if (err) { res.writeHead(403, {'Content-Type':'text/plain'}); res.write("Error […]

将JSON对象转换为缓冲区并缓冲到JSON对象

我有一个JSON对象,我把它转换成一个缓冲区,并在这里做一些过程。 后来我想转换相同的缓冲区数据转换为有效的JSON对象。 我正在使用Node V6.9.1 下面是我尝试的代码,但我得到[object object]当我转换回JSON,无法打开这个对象。 var obj = { key:'value', key:'value', key:'value', key:'value', key:'value' } var buf = new Buffer.from(obj.toString()); console.log('Real Buffer ' + buf); //This prints –> Real Buffer <Buffer 5b 6f 62 6a 65 63 74> var temp = buf.toString(); console.log('Buffer to String ' + buf); //This prints –> Buffer to String […]