我正在尝试找到一种生成随机的 32 位十六进制序列的好方法,并从 10*78 等大数中获取其随机性。
对于 Python 代码,我还发现了这个:
ran = random.randrange(10**80)
myhex = "%030x" % ran
这会产生一个 64 位十六进制字符串,但有时结果是 63 甚至 61 个字符,我不确定为什么?我需要它每次都准确地返回 64。
我需要帮助调整上面的代码,以便它始终只返回 64。我不太了解“%030x”部分的工作原理。
我还尝试生成更长的十六进制字符串并缩短它:
myhex = myhex[:64]
但我仍然看到返回的字符串小于 64。
最后,我只需要从 10*78 之类的大数字派生的 64 个十六进制字符串,每次都返回。
我选择的解决方案
import random
ran = random.randrange(10**80)
myhex = "%064x" % ran
#limit string to 64 characters
myhex = myhex[:64]
print(myhex)
似乎@ScottMillers 下面的回答是我找到答案所需的关键,所以我选择他的答案作为解决方案,但想在这里发布对我有用的最终代码。
谢谢大家
原文由 Norman Bird 发布,翻译遵循 CC BY-SA 4.0 许可协议
"%030x"
表示显示 至少 30 位数字的关联值,必要时在前面填充 0。因为你的数字几乎总是比那个大,所以这对你没什么用。听起来您需要
"%064x"
。