Я заметил, что функция zlib adler32 не всегда возвращает исходное начальное число при передаче пустой строки. Например:
adler32(0xFFFFFFFF, // seed
(const Bytef *) "", // buffer
0 // length
)
возвращает 0xE000E
. Я думаю, что вместо этого должно возвращаться 0xFFFFFFFF
.
Для большинства других значений он возвращает исходное начальное число. Однако для чисел 1965855 от 0 до 0xFFFFFFFF adler32
изменяет начальное число, когда входная строка пуста.
Это ошибка или странное поведение реализации, или диапазон функции Adler-32 на самом деле является подмножеством [0,0xFFFFFFFF]?
Обратите внимание, что когда указатель равен NULL
, adler32
всегда возвращает 1
(начальное начальное число). Это задокументированное поведение.