我注意到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的行爲。