[英]converting float to fixed point in python
我認為我想得太多了,但似乎無法解決。 我正在從文件(范圍(-1,1))讀取小端浮點數,並希望將它們轉換為固定點32b。
如果我讀入值0xA0C1943B,則等於0.0045396835的浮點數。 如果我想將其表示為fixed32_31,則為0x00129834。
python中有一種簡單的方法來從0xA0C1943B轉換為0x00129834嗎?
我相信您想使用python struct
模塊:
import struct
print struct.pack('<f', some_float)
'<f'
是表示小端浮點數(4個字節)的格式字符串。 如果這對您不起作用,則應查看文檔以查找適合您的格式。
您可以將定點整數視為分數的分子,可能會加上偏差。 在您的情況下,您希望-1.0
映射到-INT_MAX
,並且1.0
映射到INT_MAX
(即2**31 - 1
INT_MAX
)。
幾輪代數曲柄給我們:
fixed = int(flt * (INT_MAX/2))
請注意,四舍五入並不完美。 如果您關心-1.0、0.0和/或1.0的確切行為,則應用稍微復雜一些的公式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.