根据文档提取原始数据

时间:2017-04-21 13:19:02

标签: javascript parsing extraction

我必须从原始十六进制字符串中提取数据,如下所示:800200217fff8000bf5e0000 如你所见,我的数据有12个字节,所以根据这个,我在网上寻找解决方案,我找到了这个解决方案:

var s = "800200217fff8000bf5e0000"
var result = [];

for(var i = 0; i < s.length; i+=2)
{
    result.push(parseInt(s.substring(i, i + 2), 16));
}

result = Uint8Array.from(result)

现在,我有:

800200217fff8000bf5e0000 =&gt; 128,2,0,33,127,255,128,0,191,94,0,0

这是一个好点。但现在,我在数据提取方面遇到了麻烦。根据发送帧的设备的文档,我在第一个字节的描述中读到了这个:

位|名称|描述

7 |停车位状态| 0 - &gt;空的,1 - &gt;占用

6 |电池状态| 0 - &gt;好的水平,1 - &gt;糟糕的水平

5-4 |保留|不要考虑

3-2-1-0 |框架类型| 0-信息框架,1-保持活动框架......

所以我的第一个字节有128个很好,但我真的不认为它对我有很大帮助。我有一个解决方案,比如除以128,64,32等,如果该位为1或0,则找到每个解决方案,但我不认为这是一个很好的解决方案。

你知道一种很好的方法来执行我的数据解析吗?

1 个答案:

答案 0 :(得分:0)

使用bitwise operators

var parking_slot_status = result[0] & 1;
var battery_state = result[0] & 2;

要使第7位使用掩码0x00000001(1),要使第6位使用0x00000010(2),依此类推。