# MATH_CRC*Init

## 構文

      #include <nitro/math/crc.h>

      static inline void MATH_CRC8Init( MATHCRC8Context *context );
      static inline void MATH_CRC16Init( MATHCRC16Context *context );
      static inline void MATH_CRC16CCITTInit( MATHCRC16Context *context );
      static inline void MATH_CRC32Init( MATHCRC32Context *context );
      static inline void MATH_CRC32POSIXInit( MATHCRC32Context *context );

## 引数

context | 初期化する各種 CRC 計算用のコンテキスト構造体へのポインタ。

## 返り値

なし。

## 説明

この関数は、各種 CRC を計算する際に使用する `MATHCRC*Context` 型のコンテキスト構造体を初期化します。 `MATH_CRC*Update()`・`MATH_CRC*GetHash()`を使用する前に必ず呼び出すようにしてください。
また、初期化済みのコンテキスト構造体にこの関数を再適用しても構いません。その場合は、コンテキスト構造体は初期状態に戻ります。
CRC-8 は 8bit のハッシュ値を求めるためのアルゴリズムです。
CRC-16, CRC-16/CCITT は 16bit のハッシュ値を求めるためのアルゴリズムです。
CRC-32, CRC-32/POSIX は 32bit のハッシュ値を求めるためのアルゴリズムです。
CRC-16 は圧縮プログラムの ARC, LHA などで使用されているアルゴリズムです。先頭に 0 のバイトを追加してもハッシュ値が変わらないという制限があります。
CRC-16/CCITT は様々なデータリンク層の規格で FCS (Frame Check Sequence) として使用されているアルゴリズムです。CCITT (Comite Consultatif International Telegraphique et Telephonique) の X.25 などで規定されています。
CRC-32 は圧縮プログラムの PKZIP や画像フォーマットの PNG などで使用されているアルゴリズムです。詳細は ISO 3309, RFC 2083 などを参照してください。
CRC-32/POSIX は POSIX 準拠の Unix に標準で入っている cksum コマンドで使用されているアルゴリズムです。POSIX 1003.2 で規定されています。なお、cksum コマンドでは、入力ファイルの最後にファイル長を加えてから CRC をとります。

## 参照

`MATH_CRC*Update, MATH_CRC*GetHash`

## 履歴

2005/04/12 初版