在python中将float转换为固定点

时间:2015-10-14 16:42:41

标签: python floating-point type-conversion fixed-point

我认为我正在过度思考这个问题,但我似乎无法解决这个问题。我正在读取文件中的小端浮点数(范围(-1,1)),并希望将它们转换为固定点32b。

如果我读入值0xA0C1943B,那相当于一个0.0045396835的浮点数。如果我想将其表示为fixed32_31,则为0x00129834。

python中有一种简单的方法可以从0xA0C1943B到0x00129834吗?

2 个答案:

答案 0 :(得分:0)

我相信你想使用python struct模块:

import struct
print struct.pack('<f', some_float)

'<f'是一个表示小端浮点数(4个字节)的格式字符串。 如果这对您不起作用,请查看文档以了解适合您的格式。

enter image description here

答案 1 :(得分:0)

您可以将定点整数视为分数的分子,可能会应用偏差。在您的情况下,您希望-1.0映射到-INT_MAX1.0映射到INT_MAX(即2**31 - 1)。

几代代数曲柄给了我们:

fixed = int(flt * (INT_MAX/2))

请注意,那里的舍入并不完美。如果您关心-1.0,0.0和/或1.0的确切行为,则应用稍微复杂的公式。