fnv1a32
FNV-1a 32-bit
目的
短 い key や byte列 に対 する lightweight hash state を提供 します。updateを繰 り返 して byte を混合 し、finalizeで 32-bit値 を取 り出 せるようにします。
実装
- FNV-1a の
更新式 (hash xor byte) * primeをそのまま実装 します。 - state は
Fnv1a32struct 1個 に保持 します。
注意
暗号 用途には使 えません。永続化 や通信 で互換 を保証 する fingerprint として使 うものではなく、主に stdlib内部 の分散用途です。
計算量
update/finalizeは O(1) です。
Fnv1a32: 構造体の概要
- Fnv1a32 の主な用途と呼び出し方を示します。
- 定義済み処理をそのまま呼び出す薄いラッパで構成されています。
- 引数の値は関数呼び出しで移動するため、再利用時は束縛し直してください。
- 定義そのものは O(1) です。
new_fnv1a32: 主な用途
- オフセット基底値で初期化された
Fnv1a32を返 します。
- 基底値
0x811c9dc5(-2128831035) を state に保持 します。
- O(1)
fnv1a32_update: 主な用途
- byte を 1
個 混合 した新しい state を返 します。
(hash xor byte) * 16777619を計算 します。
- O(1)
fnv1a32_finalize: 主な用途
現在 の 32-bit hash値 を返 します。
- O(1)