我读了一些数据,这些数据在[-1, +1]
区间用
A = numpy.fromstring(data, dtype = numpy.float32)
但是我不希望将数组保持为float32
,而是将其作为32位整数(在[-2^31, +2^31-1]
中)。
我试着干脆:
A = numpy.fromstring(data, dtype = numpy.int32) # that's wrong!
但它提供了一个糟糕的结果。 (错误可能是乘法常数,或其他原因?)
如何将[-1,1]中的IEEE32 float数组读入[-2^31, +2^31-1]
中的32位整数数组?
PS:这会有效,但我想避免这种天真的方式:
A = numpy.fromstring(data, dtype = numpy.float32)
A *= 2^31
A = int(A) # convert the data type to int
如果可能的话,因为我认为有一种更聪明的方法可以做到这一点,而不是乘法,而只是通过按位做事......