不是8位对齐的Buffer数据可以怎么处理?
发布于 7 年前 作者 p2227 2997 次浏览 来自 问答
let buf = Buffer.alloc(4);
//buf的二进制分割情况是   0 11111111 00000000000000000000000 不是8位对齐的。

比如数据总共长32位,我想分别取第1位,第2-9位,剩下23位,可以怎么处理比较优雅而且效率高?

2 回复

用位运算应该比较快:

let buf = Buffer.allocUnsafe(4);
let v = buf.readUInt32BE(buf);
let a = v >>> 31;
let b = v >>> 23 & 0xFF;
let c = v & (Math.pow(2, 24) - 1);

@zbinlin 好的,概括一下,就是把想要的数据移到低位再与一下【相应位数的全1】

回到顶部