簡體   English   中英

在Python中將float轉換為固定點

[英]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個字節)的格式字符串。 如果這對您不起作用,則應查看文檔以查找適合您的格式。

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

您可以將定點整數視為分數的分子,可能會加上偏差。 在您的情況下,您希望-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM