Articles of 缓冲区

关于二进制序列化和反序列化的问题

我想创build一个能高效地序列化和反序列化一个Buffer的模块。 所以我在问自己几个问题。 使用序列化和反序列化函数创build一个ES6类,处理按位运算符,还是必须使用像concetrate或dissolve这样的模块,是一个好的操作? 哪种手术更好? 我已经找了一个NPM包,可以有效地序列化和反序列化ZCL缓冲区,我发现了像“binary-parser”这样看起来不错的东西,但是可能会很重,因为ZCL群集有多个不同的字节执行。 那么有没有什么东西,而不是只有序列化或反序列化,会做呢?

节点的readFile()是否使用一个缓冲区来分配所有的文件大小?

我对Node和文件系统stream的关注很新。 我想现在,如果readFile函数可能读取文件统计信息,请获取大小并创build一个分配了所有文件大小的单个缓冲区。 或换句话说:我知道它加载整个文件,好的。 但是,它是通过将文件内部分割到更多缓冲区还是仅使用一个较大的缓冲区来实现的? 根据使用的方法,它有不同的内存使用/泄漏的影响。

Node.js将缓冲区转换为Int8Array

在客户端,我将TypedArray转换为Blob并传输到服务器,以检查数据是否正确,我想比较客户端和服务器端的前五个值, 在客户端: var fileReader = new FileReader(); fileReader.onload = function() { callback(new Int8Array(this.result)); }; fileReader.readAsArrayBuffer(blob); (从中我读了callbackfn中的前五个值) 但在服务器上,我发现代码将blob转换为缓冲区,并从我的理解, buffer和arraybuffer是不一样的, var buffer1 = new Buffer( blob, 'binary' ); 缓冲区有什么类似于DataBuffer的DataView ,现在我如何读取缓冲区1的前5个值作为我能够在客户端做的整数?

NodeJS从缓冲区读取ASCII

我有一个应用程序将收到一个二进制格式的文件<type>:<location>\n<binary> ,所以图片可能看起来像image:~/documents/image.png\n<image> 。 要在节点中读取,我有以下代码。 var type = ''; var destination = ''; var i = -1; while (data[++i] != ':') type += data[i]; while (data[++i] != '\n') destination += data[i]; data = data.slice(i); 但是,这会导致节点吃掉所有的RAM和CPU,并最终崩溃。 我究竟做错了什么? 谢谢!

如何读取Node.js缓冲区上的UInt64 Double?

我想读一个UInt64BE并将其转换为Double 。 我怎样才能做到这一点? 我将Double转换为UInt64BE ,如下所示: var time = Date.now(); buffer.writeUInt32BE(parseInt(time / 0xffffffff, 10), 0); buffer.writeUInt32BE(parseInt(time & 0xffffffff, 10), 4);

节点js TCP服务器,socket.on('data') – 数据缓冲区包含高负载的垃圾数据

我使用节点js的networking服务器并使用socket.on('data')函数接收数据。 parsingTCP消息我使用parsing缓冲区方法。 这将使用前4个字节作为TCP消息的长度,以便我可以从TCPstream中读取并形成单独的命令。总结高负载情况下,会有一些垃圾数据作为TCPstream的一部分返回,问题。 function onConnect(client) { var accumulatingBuffer = new Buffer(0); var totalPacketLen = -1; var accumulatingLen = 0; var recvedThisTimeLen = 0; client.on('data', function (data) { parseBuffer(client, data, accumulatingBuffer, totalPacketLen, accumulatingLen, recvedThisTimeLen); }); } 这里是parsebuffer方法。 function parseBuffer(client, data, accumulatingBuffer, totalPacketLen, accumulatingLen, recvedThisTimeLen) { recvedThisTimeLen = Buffer.byteLength(data); var tmpBuffer = new Buffer(accumulatingLen + recvedThisTimeLen); accumulatingBuffer.copy(tmpBuffer); […]

节点JS中的UInt16LE,UInt16BE等等是什么?

在我所有的编程时间里,我都没有学过这些东西, 想知道更多这些是什么,以及如何使用它们: UINT8 UInt16LE UInt16BE UInt32LE UInt32BE INT8 Int16LE Int16BE Int32LE Int32BE FloatLE FloatBE DoubleLE DoubleBE 请参阅https://nodejs.org/api/buffer.html#buffer_buf_readuint8_offset_noassert了解Node所使用的位置。

如何检测套接字Node.js中的networking故障

我正在尝试写内部运输系统。 数据应该使用networking套接字从客户端传输到服务器。 除了处理networking问题,它工作正常。 如果我在客户端和服务器之间放置防火墙,双方我都不会看到任何错误,所以数据将继续填充客户端的内核缓冲区。 如果我将在这一刻重新启动应用程序,我将失去缓冲区中的所有数据。 问题:我们有办法检测networking问题吗? 我们有办法从内核缓冲区获取数据吗?

节点js缓冲器翻转二进制位

我正在解决nodejs中的一些解码,并有一个缓冲区: 59 19 F2 92 8C 88 88 88 89 88 EB 89 88 88 A1 8A 88 88 88 88 89 88 A8 CD 88 88 88 DB 88 88 88 DC 88 88 88 A5 88 88 88 BD 88 88 88 B2 88 88 88 B8 88 88 88 B8 88 88 […]

Unity C#将float转换为字节数组并使用节点js读取

有人可以解释我怎么可以将一个float(Vector3.x)转换为一个字节数组与c#和解码与节点js? 我在互联网上读到Vector3.x是一个单一的数据types,使用4个字节(32位)。 我使用BitConverter将其转换为一个字节数组。 用Nodejs我使用readFloatBE()。 我不知道我在做什么错,但是我用console.log()节点js得到了一个不好的结果。 Unity csharp: public static int FloatToBit(int offset, ref byte[] data, Single number) { byte[] byteArray = System.BitConverter.GetBytes(number); for (int i = 0;i<4;i++) { data[offset + i] = byteArray[i]; } return 4; } 节点js readFloat: function (offset, data) { var b = new Buffer(4); for (var i = 0; i < […]