Если у вас есть следующая шестнадцатеричная строка: '8A'
, она занимает два символа, то есть два байта.
Это то, что sha1()
возвращает по умолчанию - с 40 символами вместо двух, конечно.
Если у вас есть значение 138
, это целое число, которое занимает только один байт памяти, но оно представляет собой то же самое, поскольку целое число 138
является шестнадцатеричным значением 8A
.
Это значение, которое будет возвращено sha1()
, если для raw_output
установлено значение true
- с 20 байтами вместо одного.
При использовании шестнадцатеричной строки для представления целого числа вам нужно два символа для представления значений от 0 до 255 - и эти значения, если они хранятся в виде 8-разрядного целого числа, требуют сохранения только 1 байта.
Вот почему шестнадцатеричная строка, возвращаемая sha1()
по умолчанию, составляет 40 байтов, а целочисленное значение, возвращаемое в другом случае, составляет всего 20 байтов.