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

时间:2014-07-28 18:29:17

标签: 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

他们可以用什么方法对字节中的温度数据进行编码? 有没有方法对流进行逆向工程?

看着它很明显,它们正在增加2的幂,但我无法弄清楚它背后的逻辑。

1 个答案:

答案 0 :(得分:9)

前四位形成一个4位Gray code,因为每两个连续的位序列在一个位置上有所不同:

0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1001
1000
1010
1011
[1111] (missing, probably 31C)

您的样本没有给出[17,13]范围之外发生的任何迹象。 至于为什么会使用这种模式,Wikipedia provides some examples

  

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

相关问题