【问题标题】:unknown non-binary data encoding - any hints?未知的非二进制数据编码 - 有什么提示吗?
【发布时间】:2019-08-16 12:29:24
【问题描述】:

我正在尝试解码气象站通过射频发送的数据。 不幸的是,数据表示不是标准的二进制方式(0000、0001、0010、0011,...)。我发现的是以下方案:

value    representation
0     => 0xff = 0b11111111
1     => 0x00 = 0b00000000
2     => 0x01 = 0b00000001
3     => 0xfe = 0b11111110
4     => 0x03 = 0b00000011
5     => 0xfc = 0b11111100 
6     => 0xfd = 0b11111101
7     => 0x02 = 0b00000010
...

或细分为:

value: 0       8       16      24
       |       |       |       |
Bit 0: 1010101010101010101010101010 ...
Bit 1: 1001100110011001100110011001
Bit 2: 1001011010010110100101101001
Bit 3: 1001011001101001100101100110
Bit 4: 1001011001101001011010011001
Bit 5: 1001011001101001011010011001
Bit 6: 1001011001101001011010011001
Bit 7: 1001011001101001011010011001

每个位似乎都遵循某种模式,即前面的镜像和反转,例如位 3 = 10 01 0110 01101001

那种叫做like的编码是什么,如何轻松转换成标准的二进制形式?

【问题讨论】:

  • 我想在电子姐妹网站你可能会得到更好的答案:编码数据的方法有很多,他们会发现的。

标签: encoding binary


【解决方案1】:

看起来 LSB 模式是周期性的,周期为 2(重复 10 次),下一位是周期的,周期为 4(重复 1001),并且可能之前的位具有周期 8(重复 10010110)。

当然,这有点类似于正常的表示,除了通常重复的模式是 01、0011、00001111 等等。

模式 1001 似乎是通过复制 10 并反转第二个副本创建的。同样,模式 100100110 是通过复制和反转 1001 创建的。因此,周期 16 的下一个模式将是 10010011001101001。

现在,这些模式有什么关系?

对于最低位,10 repeated01 repeated XOR (11)。很简单。

对于下一位,1001 repeated0011 XOR (1010) repeated - 请注意 LSB 模式是 10 repeated

之后,我们得到10010110 repeated,即00001111 XOR (10011001) repeated。看到图案了吗?

所以:您需要从 MSB 开始,将每个位与其右侧的位进行异或。

【讨论】:

  • 哇,你真是个天才! XORing 的方法非常有效。基于此,我可以将解码简化为:value = (code ^ ((code
猜你喜欢
  • 2016-02-14
  • 1970-01-01
  • 2013-11-12
  • 2021-12-30
  • 2021-12-03
  • 2014-08-09
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多