如题,通过socket采集的数据,需要将此格式转换成浮点数
谢谢大家
python处理二进制数据,比如存取文件,socket操作时.这时候,可以使用struct模块来完成.可以用struct来处理c语言中的结构体, 可处理结构体字节对齐, 网络字节序大小端等等问题.
import struct
for each in a:
print struct.unpack("0f", each)
是不是把这四个字符弄成一个float啊,也不知道字节序,下边按默认弄一个例子
import struct
a = ['0x41', '0x4a', '0x9a', '0x99']
raw = struct.pack('BBBB', int(a[0], 16), int(a[1], 16), int(a[2], 16), int(a[3], 16))
# raw = 'AJ\x9a\x99'
theFloat = struct.unpack('f', raw)[0]
# theFloat = -1.5953217705540475e-23
PS:socket得到的应该是原始的数据如:'\x41\x4a\x9a\x99'之类的str或者buffer等,怎么是个字符数组['0x41', '0x4a', '0x9a', '0x99']
总之你还是看看这里吧python document
a = ['0x41', '0x4a', '0x9a', '0x99']
re = []
for x in a:
re.append(float(int(x, 16)))
print re
或者你也可以用lambda表达式,会更简洁和优雅。
re = map(lambda x : float(int(x, 16)), a)