我想知道在SQLite模式下的校验和算法,我已经检查了文档文件,但它是这样显示的(此图像是在sqlite文档文件https://www.sqlite.org/fileformat2.html#section_4_1中捕获的)

我不明白“帧头的最后8个字节中的校验和值与WAL头的前24个字节和前8个字节连续计算的校验和以及当前帧之前(包括当前帧)的所有帧的内容完全匹配”的含义。
我想更清楚地了解。
谢谢。
发布于 2016-07-04 17:10:07
next section of the documentation说:
校验和算法
校验和是通过将输入解释为偶数个无符号32位整数来计算的:x(0)到x(N)。如果WAL报头的前4个字节中的幻数是0x377f0683,则32位整数是大端的;如果幻数是0x377f0682,则32位整数是小端的。无论使用哪种字节顺序来计算校验和,校验和值始终以big-endian格式存储在帧头中。
校验和算法仅适用于长度为8字节的倍数的内容。换句话说,如果输入是从x(0)到x(N),那么N必须是奇数。校验和算法如下:
对于i从0到n-1,s0 = s1 =0第2步: s0 += x(i) + s1;s1 += x(i+1) + s0;and for # s0和s1
输出s0和s1都是按相反顺序使用斐波那契权重的加权校验和。(最大的斐波那契权重出现在求和序列的第一个元素上。)s1值跨越序列的所有32位整数项,而s0省略最后一项。
https://stackoverflow.com/questions/38180699
复制相似问题