我正在查看维基百科上的SHA256伪代码。
具体来说,我正在查看以下部分。
//Initialize variables
//(first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):
h0 := 0x6a09e667
我正试图弄清楚h0是如何生成的。从注释中我知道这应该是2的平方根的小数部分。我相信可以通过输入以下内容来获取2的平方根的小数部分。以下所有代码均来自Python repl。
>>> math.modf(math.sqrt(2))[0]
0.41421356237309515
在文件顶部声明了所有常量的表示都是大端字节序。我知道我的环境是小端字节序,因为我打印了这个。
>>> import sys
>>> sys.byteorder
'little'
根据我手动更改h0中的十六进制值,小端表示应为0x67e6096a。
>>> int(0x67e6096a)
1743128938
我现在遇到了瓶颈。我尝试过多种操作,但没有一种能得到这个结果。我不知道如何获得浮点数小数部分的前32位。我知道我的0.41421356237309515(float)结果可以以某种方式转换为1743128938(int),但我真的不知道该怎么做。请问获取浮点数小数部分前32位所需的步骤是什么?请只给出Python解答。
谢谢。