

#include <nitro/math/crc.h>
u8 MATH_CalcCRC8( const MATHCRC8Table *table, const void* data, u32 dataLength );
u16 MATH_CalcCRC16( const MATHCRC16Table *table, const void* data, u32 dataLength );
u16 MATH_CalcCRC16CCITT( const MATHCRC16Table *table, const void* data, u32 dataLength );
u32 MATH_CalcCRC32( const MATHCRC32Table *table, const void* data, u32 dataLength );
u32 MATH_CalcCRC32POSIX( const MATHCRC32Table *table, const void* data, u32 dataLength );
| table | 各種 CRC 計算用のテーブルへのポインタ。 |
| data | 入力データへのポインタ。 |
| dataLength | 入力データのサイズ。 |
各種 CRC 値。
この関数は、各種 CRC の計算を1度の関数呼び出しでまとめて行います。table 引数をあらかじめ MATH_CRC*InitTable()で初期化しておく必要があります。
入力データには任意のサイズ・任意のアラインメント位置のものが使用できます。
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*InitTable, MATH_CRC*Init, MATH_CRC*Update, MATH_CRC*GetHash
2005/04/12 初版