gpt4 book ai didi

node.js - Nodejs 将空终止字符串添加到缓冲区

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:37 25 4
gpt4 key购买 nike

我正在尝试复制数据包。

此数据包:

2C 00 65 00 03 00 00 00   00 00 00 00 42 4C 41 5A
45 00 00 00 00 00 00 00 00 42 4C 41 5A 45......

2c 00 是数据包的大小...
65 00 是数据包 ID 101...
03 00 是数组中元素的数量...

现在我的问题来了,42 4C 41 5A 45是一个字符串...如果完整的话,该数据包中有该字符串的3个实例...但我的问题是它不仅仅是 null 终止,它在这些实例之间有 00 00 00 00 空格。

我的代码:

function channel_list(channels) {
var packet = new SmartBuffer();

packet.writeUInt16LE(101); // response packet for list of channels
packet.writeUInt16LE(channels.length)

channels.forEach(function (key){
console.log(key);
packet.writeStringNT(key);
});

packet.writeUInt16LE(packet.length + 2, 0);

console.log(packet.toBuffer());
}

但是如何添加填充呢?

我正在使用这个软件包,https://github.com/JoshGlazebrook/smart-buffer/

最佳答案

智能缓冲区会为您跟踪其位置,因此您无需指定偏移量即可知道在何处插入数据来填充字符串。您可以使用现有代码执行类似的操作:

channels.forEach(function (key){
console.log(key);
packet.writeString(key); // This is the string with no padding added.
packet.writeUInt32BE(0); // Four 0x00's are added after the string itself.
});

我假设您想要:42 4C 41 5A 45 00 00 00 00 42 4C 41 5A 45 00 00 00 00 等。

根据评论进行编辑:

没有内置的方法可以做你想做的事,但你可以做这样的事情:

channels.forEach(function (key){
console.log(key);
packet.writeString(key);
for(var i = 0; i <= (9 - key.length); i++)
packet.writeInt8(0);
});

关于node.js - Nodejs 将空终止字符串添加到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com