繁体   English   中英

从Buffer读取二进制数据

[英]Read binary data from Buffer

我试图检查给定Buffer的二进制数据,如下所示:

<Buffer 08 30 66 6d 41 64 69 76 66>

TMK是8字节的数据。

我要做的是检查第一个字节,并查看第一个字节中的最高位(最左边的位)。

如何确定第一位是零还是一位?

最简单的解决方案是:

Number(buf[0] > 127)

因为:

  1. JS将字节视为无符号,AKA始终为正; 因此字节值在[0..255]范围内,而对于有符号字节则为[-128..127]
  2. Number(true)== 1 ,Number(false)== 0
  3. 仅当字节在[128..255]范围内时,最高有效位为1

(额外奖励)更难阅读但更性感的版本:

((buf[0] & 0xff) >> 7)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM