Adler-32算法使用Neon优化
1、简单实现
下面代码是Adler-32算法的简单实现,我们来整理一下这段代码的逻辑:
A = 1 + D1 + D2 + ... + Dn (mod 65521)B = (1 + D1) + (1 + D1 + D2) + ... + (1 + D1 + D2 + ... + Dn) (mod 65521)= nxD1 + (n-1) x D2 + (n-2) x D3 + ... + Dn + n (mod 65521)Adler-32(D) = (B x 65536) + A
看到这个公式相信大家已经有了思路,对于A的计算很简单简单的相加,对于B的相加需要一个系数
const uint32_t MOD_ADLER = 65521;uint32_t adler32(unsigned char *data