簡體   English   中英

將Float32格式的數據提取到int32

[英]Extracting data which is in Float32 format to int32

如何將float32格式(在[-1, +1]區間中)的數據提取到[-2^31, 2^31-1]int32

這是我想做的(但效率更高,即如果可能的話不進行乘法/轉換):

f = struct.unpack('f', data)   # data is in IEEE float32 format
f *= 2**31
out = int(myfloat)

范例:

這是浮點數0.000000000: 00 00 00 00

這是浮點數1.000000000: 00 00 80 3F

這是浮點數-0.000000000: 00 00 00 80

這是浮點數-1.000000000: 00 00 80 BF

為什么將這些數字編碼為1.000000?


注意:這對於音頻應用很有用,在該應用中,.wav 32位IEEE浮點必須與常規32位整數.wav文件一起使用。

PS:我最近在這里問了一個有關float numpy數組-> int numpy數組轉換的問題: 從IEEE32 float到32bit整數numpy數組(示例:音頻.wav文件) ,但現在我意識到此問題不是特定於numpy的,因此這個更普遍的問題在這里。

您可以將帶有浮點數的列表添加到數組中,然后定義dtype,在這種情況下為'int32'。 還要注意,在Numpy中,float的dtype是'float64'。

from numpy  import *


float_data_list = [1.2, 3.5, 5.1]



matrice = array(float_data_list, dtype ='int32' ) # define dtype
print matrice

output: [1 3 5]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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