# MATH_CRC*GetHash

## 構文

      #include <nitro/math/crc.h>

      static inline u8 MATH_CRC8GetHash( MATHCRC8Context *context );
      static inline u16 MATH_CRC16GetHash( MATHCRC16Context *context );
      static inline u16 MATH_CRC16CCITTGetHash( MATHCRC16Context *context );
      static inline u32 MATH_CRC32GetHash( MATHCRC32Context *context );
      static inline u32 MATH_CRC32POSIXGetHash( MATHCRC32Context *context );

## 引数

context | CRC* 生成用のコンテキスト構造体へのポインタ。

## 返り値

なし。

## 説明

この関数は、各種 CRC によるハッシュ値を得ます。context 引数をあらかじめ `MATH_CRC*Init()`で初期化した上で、 入力データを `MATH_CRC*Update()`で与えておく必要があります。
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*Init, MATH_CRC*Update`

## 履歴

2005/04/12 初版