首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产生大量的HEX

产生大量的HEX
EN

Stack Overflow用户
提问于 2017-05-02 13:11:17
回答 2查看 225关注 0票数 0

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

代码语言:javascript
复制
for y in range (0, 16**16): 
    print '0x%0*X' % (16,y)

这给了我:

OverflowError: range()结果有太多项

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

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

代码语言:javascript
复制
0000000000000000
0000000000000001
0000000000000002
...
FFFFFFFFFFFFFFFF

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

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

EN

回答 2

Stack Overflow用户

发布于 2017-05-02 13:19:21

好吧..。16^16 = 1.8446744e+19,因此假设您可以计算出每毫秒10个值(这是一个10 that的速率)。然后用16^16 / 10纳秒来计算它们,也就是58.4年。此外,如果您可以以某种方式将每个值压缩为1位(这是不可能的),则需要2艾字节的内存来包含这些值(16^16/8/2^60)。

票数 1
EN

Stack Overflow用户

发布于 2017-05-02 13:18:26

这似乎是一种非常人工的锻炼。这是家庭作业,还是有理由产生这份清单?这将是非常长(见其他答案)!

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

  1. 使用Python3.x,其中range实际上并不列出一个列表,而是一个特殊的类似生成器的对象。
  2. 使用xrange,它也不实际列出一个列表,但是再次生成一个对象。

至于时间安排,所有的时间都将以书面形式提交给文件或屏幕。你可以通过做一个更小的列表,然后做一些数学来得到一个估计,但你必须小心,它足够大,时间被写行,而不是打开和关闭文件。

但你也应该问问自己得到的文件有多大.你可能不喜欢你发现的。也许你是说2^16?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43738797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档