我注意到zlib的adler32 function并不总是在传递空字符串时返回原始种子。例如:为什么是adler32(0xFFFFFFFF,“”)= 0xE000E?
adler32(0xFFFFFFFF, // seed
(const Bytef *) "", // buffer
0 // length
)
返回0xE000E
。我认为它应该返回0xFFFFFFFF
。
对于大多数其他值,它确实会返回原始种子。但是,对于从到 到 0xFFFFFFFF,adler32
的1965855号码,输入字符串为空时将更改种子。
这是一个错误或古怪的执行行为,或者是Adler-32函数的范围实际上是[0,0xFFFFFFFF]的一个子集?
请注意,当指针为NULL
时,adler32
始终返回1
(初始种子)。这是documented的行为。