Что выполняет данная строка?(Это работа с 16-ричными переменными)

h0 = 0x67452301
h0 = h0 + a & 0xffffffff

Я так понимаю, что это работа с 16 переменными?


Ответы (2 шт):

Автор решения: Victor VosMottor

Ну присваивает хекс значение (0x67452301) переменной h0 потом выполняет сложение с a & 0xffffffff, что без контекста не понятно зачем и т.д.

@EzikBro:

В данном коде к числу h0 = 1732584193 прибавляется остаток от a при делении на 2^32

→ Ссылка
Автор решения: Zhihar

Это кусок кода подсчёта алгоритма вычисления хэша SHA-1

поскольку в питоне целые числа неограниченной длины, а в алгоритме используются 32 битные числа, то чтобы оставаться в диапазоне 32 битных чисел числа обрезаются

a & 0xffffffff

как раз выполняет функцию "обрезки" любого числа до 4 байт (32 бит)

т.е. вместо алгоритма

h0 += a

используется алгоритм, который не даёт числу улезть за нужный диапазон значений

хотя на мой взгляд более правильным было бы сделать так:

h0 += a
h0 &= 0xffffffff
→ Ссылка