在Python中用14个小数位将uint16重新解释为定点

时间:2018-07-21 10:26:41

标签: python fixed-point

我正在从一个系统向另一个系统发送数据(带14个小数位的带符号16位固定点)。由于限制,在传输数据之前必须将数据重新解释为uint16(即位表示形式相同)。数据最终以Python编写,但我一直在努力寻找一种方法来将其重新解释为原始格式。

例如: 原始值为-0.123,重新解释为带有值的uint16 63521

如何使用Python将其转换回值-0.123

更多示例

1.0450  -> 17121
0.9870  -> 16171
-0.9870 -> 49365

1 个答案:

答案 0 :(得分:1)

将其转换回的一种可能方法是:

def Q2_14toFloat(x):
    # convert unsigned to signed
    x = (x ^ 0x8000) - 0x8000
    # scale
    return x * (1.0 / 16384.0)