根据文档提取原始数据
Raw data extraction according to a documentation
我必须从原始十六进制字符串中提取数据,如下所示: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 => 128,2,0,33,127,255,128,0,191,94,0,0
这是一个很好的观点。但是现在,我在数据提取方面遇到了麻烦。根据发送帧的设备的文档,我在第一个字节的描述中看到了这个:
位 |名称 |说明
7 |车位状态| 0 -> 空,1 -> 占用
6 |电池状态 | 0 -> 好水平,1 -> 差水平
5-4 |保留 |不考虑
3-2-1-0 |帧类型 | 0- 信息帧,1- 保持活动帧等...
所以我的第一个字节有 128 很好,但我真的不认为它会对我有很大帮助。我有一个解决方案,比如除以 128、64、32 等,如果该位为 1 或 0,则找到每个,但我认为这不是一个好的解决方案。
你知道一个很好的方法来执行我的数据解析吗?
var parking_slot_status = result[0] & 1;
var battery_state = result[0] & 2;
要获得第 7 位使用掩码 0x00000001
(1),要获得第 6 位使用 0x00000010
(2) 等等。
我必须从原始十六进制字符串中提取数据,如下所示: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 => 128,2,0,33,127,255,128,0,191,94,0,0
这是一个很好的观点。但是现在,我在数据提取方面遇到了麻烦。根据发送帧的设备的文档,我在第一个字节的描述中看到了这个:
位 |名称 |说明
7 |车位状态| 0 -> 空,1 -> 占用
6 |电池状态 | 0 -> 好水平,1 -> 差水平
5-4 |保留 |不考虑
3-2-1-0 |帧类型 | 0- 信息帧,1- 保持活动帧等...
所以我的第一个字节有 128 很好,但我真的不认为它会对我有很大帮助。我有一个解决方案,比如除以 128、64、32 等,如果该位为 1 或 0,则找到每个,但我认为这不是一个好的解决方案。
你知道一个很好的方法来执行我的数据解析吗?
var parking_slot_status = result[0] & 1;
var battery_state = result[0] & 2;
要获得第 7 位使用掩码 0x00000001
(1),要获得第 6 位使用 0x00000010
(2) 等等。