繁体   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