NEPLg2 Standard Library - fnv1a32 - fnv1a32
Web Playground
Web Playground

fnv1a32

FNV-1a 32-bit 非暗号ひあんごう hash

目的もくてき

  • みじかい key や byte れつたいする lightweight hash state を提供ていきょうします。
  • updateかえして byte を混合こんごうし、finalize で 32-bit あたいせるようにします。

実装じっそう

  • FNV-1a の更新式こうしんしき (hash xor byte) * prime をそのまま実装じっそうします。
  • state は Fnv1a32 struct 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)