我有一个数据包,当以十六进制查看时:
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
,但其他一切仍然是错误的。
答案 0 :(得分:1)
您错误地指定了Endianness
的值。 0A 00
是小端格式的10
,但您已将其指定为b16
(b
表示大端)。
parser.extract(
"l16 => length, " +
"l16 => id, " +
"l16 => clientVersion, " +
"l16 => updateVersion, " +
"l16 => dateVersion",
function (record) {