不是8位对齐的Buffer数据可以怎么处理?
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】