生成大量的HEX

时间:2017-05-02 13:11:18

标签: python

我正在尝试生成所有16 ^ 16, 但是有一些问题。主要是记忆。 我尝试在python中生成它们:

for y in range (0, 16**16): 
    print '0x%0*X' % (16,y)

这给了我:

  

OverflowError:range()结果包含太多项目

如果我使用sys.maxint,我会得到一个MemoryError。

更确切地说,我想生成长度为16的所有HEX组合,即:

0000000000000000
0000000000000001
0000000000000002
...
FFFFFFFFFFFFFFFF

另外,我如何计算生成它们所需的大致时间?

我愿意使用任何编程语言,只要我可以将它们保存到输出文件中。

2 个答案:

答案 0 :(得分:1)

嗯... 16 ^ 16 = 1.8446744e + 19,所以假设您可以计算每纳秒10个值(这是一个10GHz的速率btw)。然后你需要16 ^ 16/10纳秒来计算它们全部,或58。4年。此外,如果你能以某种方式将每个值压缩为1位(这是不可能的),则需要2艾字节的内存来包含这些值(16 ^ 16/8/2 ^ 60)。

答案 1 :(得分:0)

这似乎是一种非常人为的运动。是作业,还是有理由生成这个列表?这将是非常长的(见其他答案)!

话虽如此,你应该问问自己:为什么会这样?答案是Python 2.x 中的range生成一个实际的列表。如果你想避免这种情况,你可以:

  1. 使用Python 3.x,其中range实际上不是列表,而是一个特殊的类生成器对象。
  2. 使用xrange,它也不会实际制作列表,但会再次生成一个对象。
  3. 至于时间,所有时间都是写入文件或屏幕。你可以通过制作一个更小的列表然后做一些数学来得到估计,但是你必须要小心,它足够大,以便通过写行来控制时间,而不是打开和关闭文件。 / p>

    但你也应该问自己,结果文件有多大......你可能不喜欢你找到的东西。也许你的意思是2 ^ 16?