Javascript 在node.js中将二进制数据拆分为数组或类

Javascript 在node.js中将二进制数据拆分为数组或类,javascript,node.js,Javascript,Node.js,如何使用二进制分隔符拆分Node.js中的二进制数据缓冲区?例如,套接字数据以二进制代码发送,每个字段由\xb8限定。如何将其拆分为一个数组 更好的是,有没有办法编写一个类或一些可以加载到其中的东西?例如,每个数据包发送由\xb8分隔的命令参数对。我是否可以使用二进制数据获取一个变量,并将其分解为多个命令实例?阅读 遍历缓冲区中的每个字符,并在遇到指定字符时创建新的缓冲区 function splitBuffer(buf, delimiter) { var arr = [], p = 0;

如何使用二进制分隔符拆分Node.js中的二进制数据缓冲区?例如,套接字数据以二进制代码发送,每个字段由\xb8限定。如何将其拆分为一个数组

更好的是,有没有办法编写一个类或一些可以加载到其中的东西?例如,每个数据包发送由\xb8分隔的命令参数对。我是否可以使用二进制数据获取一个变量,并将其分解为多个命令实例?

阅读

遍历缓冲区中的每个字符,并在遇到指定字符时创建新的缓冲区

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个字节,则必须一次比较一个字节,或者使用