我目前正在尝试使用实际代表其他数据类型的整数数组,并将它们转换为正确的数据类型。
所以例如,如果我有整数数组[1196773188,542327116],我发现这个整数数组表示来自其他函数的字符串,转换它,并意识到它代表字符串" DOUGLAS" 。第一个数字转换为十六进制数字0x47554F44,第二个数字表示十六进制数字0x2053414C。使用十六进制到字符串转换器,这些对应于字符串' GOUD'和' SAL'分别以小端方式拼写DOUGLAS。字母在数组的各个元素中向后的方式可能源于字节以litte endian方式存储,尽管我可能会误解。
这些整数数组可以表示许多数据类型,包括字符串,布尔值和浮点数。
我需要使用Python 2.7,所以遗憾的是我不能使用bytes函数。
有没有一种简单的方法可以将整数数组转换为相应的数据类型?
答案 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)
我们一次只能解压缩一定数量的字节。谢谢大家的建议!