如何在python3中创建二进制文件序列?

时间:2015-02-22 10:11:22

标签: python binary

我想在python3中创建二进制文件序列。以下代码生成第一个。

with open('out', 'wb') as f:
    f.write(b'\x00\x00\x00\x00\x00\x00\x00\x00')

结果是

xxd out
0000000: 0000 0000 0000 0000                      ........

我想生成包含从0000 0000 0000 0000ffff ffff ffff ffff的序列值之一的文件。 如何做上述任务?

2 个答案:

答案 0 :(得分:1)

import struct
for i in range(0xffffffffffffffff + 1):
     with open('out{:d}'.format(i), 'wb') as f:
         f.write(struct.pack('Q', i))

答案 1 :(得分:0)

以下将创建一个名为out的文件,其中包含序列中可能的0x10000000000000000个不同的8字节值之一(randint包含在内):

import random
import struct

value = random.randint(0, 0xffffffffffffffff)

hexbytes = ' '.join(''.join(g) for g in zip(*[iter('{:016X}'.format(value))]*4))
print('file contains bytes {}'.format(hexbytes))

with open('out', 'wb') as f:
    f.write(struct.pack('Q', value))

示例输出:

file contains bytes EFB4 A2DC A11B 98AE