使用Python重现遗留二进制文件

时间:2015-08-11 21:32:19

标签: python-2.7

我正在尝试在Python 2.7中编写遗留二进制文件格式(该文件将由C程序读取)。

有没有办法将整数的十六进制表示输出到文件?我怀疑我必须自己动手(尤其是因为我不认为Python有short int,int和long int的概念),但以防万一我以为我会问。如果我有一个清单:

[0x20, 0x3AB, 0xFFFF]

是否可以轻松地将其写入文件,以便十六进制编辑器将文件内容显示为:

20 00 AB 03 FF FF

(注意字节顺序)?

1 个答案:

答案 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'))

......还是那样的?我打赌,你需要稍微改变一下格式。

相关问题