问题描述
在我的代码中,我想每次都将变量“liczba”作为 str 散列,但在我的代码中,它仅在第一次算作 str 。每个下一个循环它都被散列为浮点数。此外,变量“liczba”应该通过在每个循环中添加 0.0000000000000000000000000000000000000000000001 来改变。我尝试使用
liczba = str(obecna_liczba)
但它不工作idk为什么。有什么建议吗?
import hashlib
obecna_liczba = 0.0000000000000000000000000000000000000000000001
koncowa_liczba = 0.0000000000000000000000000000000000000000000010
liczba = '0.0000000000000000000000000000000000000000000001'
filepath = "X:\hashe.txt"
f = open(filepath,"w")
while(obecna_liczba < koncowa_liczba):
hash = hashlib.sha256(str(liczba).encode('utf-8'))
f.write(hash.hexdigest())
f.write("\n")
obecna_liczba += 0.0000000000000000000000000000000000000000000001
print(type(obecna_liczba))
liczba = str(obecna_liczba)
print(type(liczba))
f.close()
解决方法
如果您真正需要的只是字符串 0.0000000000000000000000000000000000000000000001
到 0.0000000000000000000000000000000000000000000010
的 SHA-256 哈希,您可能希望跳过浮点运算而只生成字符串。
:046d
格式说明符指定十进制数字的零填充,宽度为 46 个字符,根据您的原始数字。
import hashlib
for x in range(1,11):
number_string = f"0.{x:046d}"
print(number_string,hashlib.sha256(number_string.encode('utf-8')).hexdigest())
输出是
0.0000000000000000000000000000000000000000000001 164f084fdd4bf692f0d0e8f4505132d7bdffae467377cf2512af321f5c0d9e4c
0.0000000000000000000000000000000000000000000002 20c3aeba98845b288eb7109b8153c938289c359b8929ee738cde7606960f4399
0.0000000000000000000000000000000000000000000003 71c0ec3a6a53562682b79f3e8b196637f33a7bed3fc376cf39b6bcd3d78a3e5b
0.0000000000000000000000000000000000000000000004 2d7e43b48eff27ed8023090160021dffe507ef7bdb8a9e3547e4cf9709df6c79
0.0000000000000000000000000000000000000000000005 63037238589c29e32e9468487314acce5d4a093fcfd85df9db5fecc5187fc3e9
0.0000000000000000000000000000000000000000000006 e3399f0597f6682b9ff4510b1bc520e4251ef3eda99ab10d25234909d2137744
0.0000000000000000000000000000000000000000000007 e168716f1ae7d8df34e0d1394b42b86fab91fb13f1e5b95a4094291980f6d884
0.0000000000000000000000000000000000000000000008 2c6379918c12a69aaeb9067be5878a423836e60d20064bcba5ffc3f96cb96ffa
0.0000000000000000000000000000000000000000000009 bd96da9bec4c5e4781240d09f7095da2e4c4fba0262bfc48ba635231b0407d4e
0.0000000000000000000000000000000000000000000010 4f3201ad75c685abb97b7873cca3092df892630b37bdc8c35bac98ce3ef6e4dc```