首页 > python中怎么将['0x41','0x4a','0x9a','0x99']转换成浮点数

python中怎么将['0x41','0x4a','0x9a','0x99']转换成浮点数

如题,通过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)
【热门文章】
【热门文章】