nodejs包解析器结构

时间:2014-02-24 15:24:06

标签: node.js tcp

我有一个数据包,当以十六进制查看时:

0A 00 2C 01 23 00 0C 00 B3 01

0A 00的长度为10 2C 01是标识符12c或者可以是十进制数据包ID 23 00是dec 35的版本。
0C 00是12月12日的另一个版本 b3 01是435。

现在我正在使用packet作为nodejs。

http://bigeasy.github.io/node-packet/

我目前有这段代码,

parser.extract("b16 => length, b16 => id, b16 => clientVersion, b16 => updateVersion, b16 => dateVersion", function (record) {
  console.log(record);
});
parser.parse(data);

这是问题,提取返回

length: 2560, version: 11265... etc. ( which is all wrong )

问题出了什么问题?


将所有内容更改为b8仍然会给我正确的长度10,但其他一切仍然是错误的。

1 个答案:

答案 0 :(得分:1)

您错误地指定了Endianness的值。 0A 00是小端格式的10,但您已将其指定为b16b表示大端)。

parser.extract(
    "l16 => length, " +
    "l16 => id, " +
    "l16 => clientVersion, " +
    "l16 => updateVersion, " +
    "l16 => dateVersion",
    function (record) {