【python】将bytes转换为float* 每四字节转化为float
FEATURE_SIZE = 256
def Bytes2Float32String(feature):
x = ""
for i in range(FEATURE_SIZE):
data = feature[i * 4: (i * 4) + 4]
a = struct.unpack('f', data)
x += str(a[0])
if i < FEATURE_SIZE - 1:
x += ','
return x
def Bytes2Float32Slice(feature):
x = []
for i in range(FEATURE_SIZE):
data = feature[i * 4: (i * 4) + 4]
a = struct.unpack('f', data)
x.append(float(a[0]))
return x
【python】将bytes转换为float* 每四字节转化为floatFEATURE_SIZE = 256def Bytes2Float32String(feature): x = "" for i in range(FEATURE_SIZE): data = feature[i * 4: (i * 4) + 4] a = struct.unpack('f', data) x += str(a[0]) if i <
import tensorflow as tf
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9],dtype='float32');
a = a.reshape(3,3);
c = a + [22,33,44];#c.dtype='float64'
c = c.astype(np.float32)
#c.dtype = 'float32'
frombuffer将data以流的形式读入转化成ndarray对象
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
buffer:缓冲区,它表示暴露缓冲区接口的对象。
dtype:代表返回的数据类型数组的数据类型。默认值为0。
count:代表返回的ndarray的长度。默认值为-1。
offset:偏移量,代表读取的起始位置。默认值为0。
#data是字符串的时候,Python3默认str是Unicode类型,所以
一个简单的问题搞了一个晚上。将4个
字节 转换成
python 的浮点数!终于发现
https://stackoverflow.com/questions/16087527/converting-a-
float-in-chars-to-
float-
python
>>> import struct
>>> x = [10, -41, -119, 65]
数据类型
转换,指的是通过某种方法,将一个数据由原来的类型
转换为另外一个类型。比如,我们将字符串“123”
转换为数字123,这就是一种数据类型的
转换。
Python支持各种标准数据类型之间的
转换,但并不是任意数据都可以
转换的,所有的
转换要符合“常理”,逻辑上应该是成立的。比如,你不应该试图将一个complex类型
转换为int,因为
python也不知该怎么
转换。
与底层设备做通讯,无论是串行通讯还是TCP,经常遇到以字节形式传输的数据格式,得到底层报文后的数据解析就成了重点。
这个百度求解的过程真是一言难尽,大部分都是复制粘贴,不知所云。
这里将最终结果记录一下。
32位二进制是4个字节,从左到右位0~31,设备间传输格式可能不同,到时候注意高低字节转换。
其中最高位bit0是符号位,0位整数,1位负数。
往后数8位,bit1~bit8是幂指数,意思就是这个byte的二...