在python中将浮点转换为定点

2024-10-02 18:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得我想得太多了,但我似乎解决不了。我正在从一个文件(范围(-1,1))读取little-endian浮点,并希望将它们转换为定点32b

如果我读入值0xA0C1943B,那就等于浮点值0.0045396835。如果我想把它表示为fixed32_31,它应该是0x00129834。在

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


Tags: 文件方法定点浮点littleendianfixed32
2条回答

我相信您希望使用pythonstruct模块:

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

'<f'是一个格式字符串,表示一个小的尾数浮点(4字节)。 如果这不起作用,你应该检查文档的格式,将适合你。在

https://docs.python.org/2/library/struct.html

你可以把一个不动点整数看作是分数的分子,可能会加上偏差。在您的例子中,您希望-1.0映射到-INT_MAX,而{}映射到{}(即,2**31 - 1)。在

转动几圈代数曲柄就可以得出:

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

注意这里的取整并不完美。如果您关心-1.0、0.0和/或1.0的确切行为,则应用稍微复杂一些的公式。在

相关问题 更多 >