0

SQLite WALモードのチェックサムアルゴリズムについて疑問に思っています。すでにドキュメントファイルをチェックしましたが、次のように書かれています(この画像はsqliteドキュメントファイルにキャプチャされていますhttps://www.sqlite.org/fileformat2.html#section_4_1

WALモードSQLiteのチェックサムアルゴリズム

「フレーム ヘッダーの最後の 8 バイトのチェックサム値は、WAL ヘッダーの最初の 24 バイト、最初の 8 バイト、およびすべてのフレームのコンテンツで連続して計算されたチェックサムと正確に一致します」の意味がわかりませんでした。現在のフレームまで」

もっとはっきりと理解したい。

ありがとう。

4

1 に答える 1

0

ドキュメントの次のセクションには、次のように記載されています。

チェックサムアルゴリズム

チェックサムは、入力を符号なし 32 ビット整数の偶数として解釈することによって計算されx(0)ますx(N)。WALヘッダーの最初の4バイトのマジックナンバーが の場合、32ビット整数はビッグエンディアンであり、マジックナンバーが の0x377f0683場合、整数はリトルエンディアンです0x377f0682。チェックサム値は、チェックサムの計算に使用されるバイト順序に関係なく、常にビッグ エンディアン形式でフレーム ヘッダーに格納されます。

チェックサム アルゴリズムは、長さが 8 バイトの倍数であるコンテンツに対してのみ機能します。つまり、入力がx(0)スルーの場合x(N)、N は奇数でなければなりません。チェックサム アルゴリズムは次のとおりです。

s0 = s1 = 0
for i from 0 to n-1 step 2:
   s0 += x(i) + s1;
   s1 += x(i+1) + s0;
endfor
# result in s0 and s1

出力s0と出力s1はどちらも、フィボナッチの重みを逆順に使用した重み付きチェックサムです。(最大のフィボナッチ重みは、合計されるシーケンスの最初の要素で発生します。)s1値は、シーケンスのすべての 32 ビット整数項にまたがりますがs0、最後の項は省略されます。

于 2016-07-04T09:10:06.643 に答える