

#include <nitro/math/crc.h>
static inline void MATH_CRC8InitTable( MATHCRC8Table *context );
static inline void MATH_CRC16InitTable( MATHCRC16Table *context );
static inline void MATH_CRC16CCITTInitTable( MATHCRC16Table *context );
static inline void MATH_CRC32InitTable( MATHCRC32Table *context );
static inline void MATH_CRC32POSIXInitTable( MATHCRC32Table *context );
| table | 初期化する各種 CRC 計算用のテーブルのポインタ。 |
なし。
この関数は、MATHCRC*Table 型の事前計算データのテーブルを初期化します。このテーブルは各種 CRC を計算する際に使用します。
MATH_CRC*Update()・MATH_CalcCRC*()を使用する前に必ず呼び出すようにしてください。
同じアルゴリズムに対しては、最初に1回だけこの関数でテーブルを初期化すれば、あとは同じテーブルを複数のCRC計算で使いまわすことができます。
ただし、CRC-16 と CRC-16/CCITT、CRC-32 と CRC-32/POSIX はそれぞれテーブルの内容が異なりますので、混ぜて使わないように注意してください。
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_CalcCRC*
2005/04/12 初版