在 Python 中将 uint16 重新解释为具有 14 个小数位的定点
Reinterpret uint16 as fixed-point with 14 fractional bits in Python
我正在从一个系统向另一个系统发送数据(带符号的 16 位定点和 14 个小数位)。由于限制,数据在传输之前必须重新解释为 uint16(即位表示相同)。数据以 Python 结束,但我正在努力寻找一种方法将其重新解释回其原始形式。
例如:
原值为-0.123
,重新解释为uint16 with value
63521
.
如何使用 Python 将其转换回值 -0.123
?
更多示例
1.0450 -> 17121
0.9870 -> 16171
-0.9870 -> 49365
一种可能的转换方式是:
def Q2_14toFloat(x):
# convert unsigned to signed
x = (x ^ 0x8000) - 0x8000
# scale
return x * (1.0 / 16384.0)
我正在从一个系统向另一个系统发送数据(带符号的 16 位定点和 14 个小数位)。由于限制,数据在传输之前必须重新解释为 uint16(即位表示相同)。数据以 Python 结束,但我正在努力寻找一种方法将其重新解释回其原始形式。
例如:
原值为-0.123
,重新解释为uint16 with value
63521
.
如何使用 Python 将其转换回值 -0.123
?
更多示例
1.0450 -> 17121
0.9870 -> 16171
-0.9870 -> 49365
一种可能的转换方式是:
def Q2_14toFloat(x):
# convert unsigned to signed
x = (x ^ 0x8000) - 0x8000
# scale
return x * (1.0 / 16384.0)