Я смотрю на следующий 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.
>>> math.modf(math.sqrt(2))[0]
0.41421356237309515
В верхней части файла указано, что объявление всех констант является Big Endian.Я знаю, что моя среда - Small Endian, потому что я печатаю.
>>> import sys
>>> sys.byteorder
'little'
Итак, согласно моей ручной манипуляции с шестнадцатеричным значением в h0, представление Little Endian должно быть 0x67e6096a.
>>> int(0x67e6096a)
1743128938
И я застрял.Я пробовал различные манипуляции, но ни один из них не заканчивается этим результатом.Я не знаю, как получить первые 32 бита дробной части числа с плавающей запятой.Я знаю, что каким-то образом мой результат 0.41421356237309515 (float) может быть преобразован в 1743128938 (int), но я действительно понятия не имею, как.Какие шаги необходимо выполнить, чтобы получить первые 32 бита дробной части числа с плавающей запятой?Python отвечает только, пожалуйста.
Спасибо.