Javascript 在node.js中将二进制数据拆分为数组或类
如何使用二进制分隔符拆分Node.js中的二进制数据缓冲区?例如,套接字数据以二进制代码发送,每个字段由\xb8限定。如何将其拆分为一个数组 更好的是,有没有办法编写一个类或一些可以加载到其中的东西?例如,每个数据包发送由\xb8分隔的命令参数对。我是否可以使用二进制数据获取一个变量,并将其分解为多个命令实例?阅读 遍历缓冲区中的每个字符,并在遇到指定字符时创建新的缓冲区Javascript 在node.js中将二进制数据拆分为数组或类,javascript,node.js,Javascript,Node.js,如何使用二进制分隔符拆分Node.js中的二进制数据缓冲区?例如,套接字数据以二进制代码发送,每个字段由\xb8限定。如何将其拆分为一个数组 更好的是,有没有办法编写一个类或一些可以加载到其中的东西?例如,每个数据包发送由\xb8分隔的命令参数对。我是否可以使用二进制数据获取一个变量,并将其分解为多个命令实例?阅读 遍历缓冲区中的每个字符,并在遇到指定字符时创建新的缓冲区 function splitBuffer(buf, delimiter) { var arr = [], p = 0;
function splitBuffer(buf, delimiter) {
var arr = [], p = 0;
for (var i = 0, l = buf.length; i < l; i++) {
if (buf[i] !== delimiter) continue;
if (i === 0) {
p = 1;
continue; // skip if it's at the start of buffer
}
arr.push(buf.slice(p, i));
p = i + 1;
}
// add final part
if (p < l) {
arr.push(buf.slice(p, l));
}
return arr;
}
函数拆分缓冲区(buf,分隔符){
var-arr=[],p=0;
对于(变量i=0,l=buf.length;i
您在简单地遍历缓冲区查找\xb8时遇到问题吗?我不知道如何使用NodeJS执行任何二进制操作。没错。记住,妖术不是魔法。您可以轻松地循环所有内容,并将其与216(而不是0xD8)进行比较,因为它们是相同的。您的意思是我可以像使用变量一样使用\x(此处为十六进制值)?哦,对不起,语法是0x(此处为十六进制值)。这太酷了。如果我需要4个字节呢?我可以使用0xb8bb吗?@DeaDEnD我认为内部if不会像您希望的那样工作。为什么不改变迭代边界而不是if呢?另外,不要忘记,根据数据的发送方式,您可能会在最后得到数据包的一部分。@LordZardeck,没错。如果要比较缓冲区中的4个字节,则必须一次比较一个字节,或者使用