在一个字节中编码计数器的可能方法有哪些?

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的幂,但我无法弄清楚它背后的逻辑.

Nik*_* B. 9

前四位形成一个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]范围之外发生的任何指示.至于为何使用这种模式,维基百科提供了一些例子:

格雷码用于位置编码器(线性编码器和旋转编码器),优先于直接二进制编码.这避免了当角度的二进制表示中的几个比特改变时,一些比特在其他比特之前改变的误读.