如何获取整数数组并将其转换为其他类型?

时间:2016-08-17 22:54:02

标签: python arrays python-2.7

我目前正在尝试使用实际代表其他数据类型的整数数组,并将它们转换为正确的数据类型。

所以例如,如果我有整数数组[1196773188,542327116],我发现这个整数数组表示来自其他函数的字符串,转换它,并意识到它代表字符串" DOUGLAS" 。第一个数字转换为十六进制数字0x47554F44,第二个数字表示十六进制数字0x2053414C。使用十六进制到字符串转换器,这些对应于字符串' GOUD'和' SAL'分别以小端方式拼写DOUGLAS。字母在数组的各个元素中向后的方式可能源于字节以litte endian方式存储,尽管我可能会误解。

这些整数数组可以表示许多数据类型,包括字符串,布尔值和浮点数。

我需要使用Python 2.7,所以遗憾的是我不能使用bytes函数。

有没有一种简单的方法可以将整数数组转换为相应的数据类型?

1 个答案:

答案 0 :(得分:2)

似乎struct模块是在不同类型之间进行转换时最好的方法:

import struct    

bufferstr = ""
dougarray = [1196773188, 542327116]
for num in dougarray:
    bufferstr += struct.pack("i", num)

print bufferstr # Result is 'DOUGLAS'

从这一点开始,我们可以使用struct.unpack()轻松地将'DOUGLAS'转换为我们想要的任何数据类型:

print struct.unpack("f", bufferstr[0:4]) # Result is (54607.265625)

我们一次只能解压缩一定数量的字节。谢谢大家的建议!