我认为我正在过度思考这个问题,但我似乎无法解决这个问题。我正在读取文件中的小端浮点数(范围(-1,1)),并希望将它们转换为固定点32b。
如果我读入值0xA0C1943B,那相当于一个0.0045396835的浮点数。如果我想将其表示为fixed32_31,则为0x00129834。
python中有一种简单的方法可以从0xA0C1943B到0x00129834吗?
答案 0 :(得分:0)
我相信你想使用python struct
模块:
import struct
print struct.pack('<f', some_float)
'<f'
是一个表示小端浮点数(4个字节)的格式字符串。
如果这对您不起作用,请查看文档以了解适合您的格式。
答案 1 :(得分:0)
您可以将定点整数视为分数的分子,可能会应用偏差。在您的情况下,您希望-1.0
映射到-INT_MAX
,1.0
映射到INT_MAX
(即2**31 - 1
)。
几代代数曲柄给了我们:
fixed = int(flt * (INT_MAX/2))
请注意,那里的舍入并不完美。如果您关心-1.0,0.0和/或1.0的确切行为,则应用稍微复杂的公式。