我正在尝试在Python 2.7中编写遗留二进制文件格式(该文件将由C程序读取)。
有没有办法将整数的十六进制表示输出到文件?我怀疑我必须自己动手(尤其是因为我不认为Python有short int,int和long int的概念),但以防万一我以为我会问。如果我有一个清单:
[0x20, 0x3AB, 0xFFFF]
是否可以轻松地将其写入文件,以便十六进制编辑器将文件内容显示为:
20 00 AB 03 FF FF
(注意字节顺序)?
答案 0 :(得分:0)
由于您有一些特定的格式需求,我认为使用hex
已经完成 - 您不需要前缀。我们改用format
。
data = [0x20, 0x3AB, 0xFFFF]
def split_digit(n):
""" Bitmasks out the first and second bytes of a <=32 bit number.
Consider checking if isinstance(n, long) and throwing an error.
"""
return (0x00ff & n, (0xff00 & n) >> 8)
[hex(x) + ' ' + hex(y) for x, y in [split_digit(d) for d in data]]
# ['0x20 0x0', '0xab 0x3', '0xff 0xff']
with open('myFile.bin', 'wb') as fh:
for datum in data:
little, big = split_digit(datum)
fh.write(format(little, '02x'))
fh.write(format(big, '02x'))
......还是那样的?我打赌,你需要稍微改变一下格式。