javascript - 使用 NodeJS 缓冲区

标签 javascript node.js hex packet

我有以下代码:

var packet = "\xFF\xFF\xFF\xFF";
packet += "\x6D";
packet += "127.0.0.1:" + this.port;
packet += "\x00";
packet += this.name;
packet += "\x00";
packet += this.map;
packet += "\x00";
packet += "game1";
packet += "\x00";
packet += "x-z";
packet += "\x00";
packet += String.fromCharCode(this.players.length);
packet += String.fromCharCode(this.maxplayers);
packet += String.fromCharCode(this.protocol);
packet += "\x64";
packet += "\x6C";
packet += "\x00";
packet += "\x01";
packet += "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00";
return new Buffer(packet, "binary");

我现在正在从字符串创建缓冲区,但我认为这不是一个好的做法,并且字符串连接效率不高。 如何用 Buffer 函数替换它并直接写入缓冲区? 我无法理解Buffer是如何工作的,例如如何在开头写入4个\xFF字节。

谢谢。

最佳答案

如果数据包的大小是固定的,那么可以使用 one of the many Buffer methods直接写入缓冲区。

从包含所有静态数据的静态字符串进行初始化,并将自定义数据留空。稍后使用预先计算的偏移量直接将自定义数据写入缓冲区。

这可能看起来像这样:

var static = "\xFF\xFF\xFF\xFF.........";
var buff = new Buffer(static, 'binary');
buff.write(this.port, portStartOffset, portStringLength, 'binary');

关于javascript - 使用 NodeJS 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632151/

相关文章:

javascript - 在不刷新页面的情况下刷新 Javascript 文件。

node.js - 无法在 Windows Server 2012 上安装 socket.io

javascript - 如何在规范中使用 require - grunt + karma + node 中的 jasmine

ios - Xcode - 颜色看起来不同但应该相同

c++ - 如何将 C++ 中的十六进制值转换为正确的字符串?

c++ - 对齐旁边的十六进制数

javascript - 选择不提交onchange

javascript - Python toDataUrl 等效项

javascript - 如何在表单中点击下一步添加幻灯片效果?

node.js - 您如何在 Node.js + Express + Mongoose + Jade 中处理表单验证,尤其是嵌套模型