scr*_*afy 9 algorithm reverse-engineering binary-data
我正在逆向工程AC遥控器.当我发送温度值(从17C到30C)时,我得到以下流.
Temperature - Binary - Hex - Decimal
17C - 00000000 - 0x00 - 0
18C - 00010000 - 0x10 - 16
19C - 00110000 - 0x30 - 48
20C - 00100000 - 0x20 - 32
21C - 01100000 - 0x60 - 96
22C - 01110000 - 0x70 - 112
23C - 01010000 - 0x50 - 80
24C - 01000000 - 0x40 - 64
25C - 11000000 - 0xc0 - 192
26C - 11010000 - 0xd0 - 208
27C - 10010000 - 0x90 - 144
28C - 10000000 - 0x80 - 128
29C - 10100000 - 0xa0 - 160
30C - 10110000 - 0xb0 - 176
Run Code Online (Sandbox Code Playgroud)
他们用什么方法来编码字节中的温度数据?有什么方法可以对流进行逆向工程吗?
很明显,它们正在增加2的幂,但我无法弄清楚它背后的逻辑.
前四位形成一个4位格雷码,因为每两个连续的位序列恰好在一个位置上不同:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1001
1000
1010
1011
[1111] (missing, probably 31C)
Run Code Online (Sandbox Code Playgroud)
您的样本没有给出[17,13]范围之外发生的任何指示.至于为何使用这种模式,维基百科提供了一些例子:
格雷码用于位置编码器(线性编码器和旋转编码器),优先于直接二进制编码.这避免了当角度的二进制表示中的几个比特改变时,一些比特在其他比特之前改变的误读.