2024-10-02 18:23:20 发布
网友
我觉得我想得太多了,但我似乎解决不了。我正在从一个文件(范围(-1,1))读取little-endian浮点,并希望将它们转换为定点32b
如果我读入值0xA0C1943B,那就等于浮点值0.0045396835。如果我想把它表示为fixed32_31,它应该是0x00129834。在
在python中有没有一种简单的方法可以从0xA0C1943B到0x00129834?在
我相信您希望使用pythonstruct模块:
struct
import struct print struct.pack('<f', some_float)
'<f'是一个格式字符串,表示一个小的尾数浮点(4字节)。 如果这不起作用,你应该检查文档的格式,将适合你。在
'<f'
https://docs.python.org/2/library/struct.html
你可以把一个不动点整数看作是分数的分子,可能会加上偏差。在您的例子中,您希望-1.0映射到-INT_MAX,而{}映射到{}(即,2**31 - 1)。在
-1.0
-INT_MAX
2**31 - 1
转动几圈代数曲柄就可以得出:
fixed = int(flt * (INT_MAX/2))
注意这里的取整并不完美。如果您关心-1.0、0.0和/或1.0的确切行为,则应用稍微复杂一些的公式。在
我相信您希望使用python
struct
模块:'<f'
是一个格式字符串,表示一个小的尾数浮点(4字节)。 如果这不起作用,你应该检查文档的格式,将适合你。在https://docs.python.org/2/library/struct.html
你可以把一个不动点整数看作是分数的分子,可能会加上偏差。在您的例子中,您希望}映射到{}(即,
-1.0
映射到-INT_MAX
,而{2**31 - 1
)。在转动几圈代数曲柄就可以得出:
注意这里的取整并不完美。如果您关心-1.0、0.0和/或1.0的确切行为,则应用稍微复杂一些的公式。在
相关问题 更多 >
编程相关推荐