crc32file

【Tera Term マクロ言語】コマンドリファレンス

crc32file 機能

[その他のコマンド]

CRC-32 を計算します。

コマンドライン

crc32file <intvar> <file name>

機能説明

引数の文字列から CRC (Cyclic Redundancy Checking) を計算します。
多項式(右回り)は以下のとおりです。

100000100110000010001110110110111
(x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x^{1}+x^{0})

計算結果は <intvar> に数値として格納されます。
crc32file でファイルが開けなかった場合は、システム変数 <result> に -1 が格納されます。

CRC アルゴリズムの実装(C言語)を以下に示します。
このアルゴリズムは、Ethernet の FCS (Frame Check Sequence) に適用されています。
#define CRCPOLY2 0xEDB88320UL  /* 左右逆転 */

static unsigned long crc2(int n, unsigned char c[])
{
	int i, j;
	unsigned long r;

	r = 0xFFFFFFFFUL;
	for (i = 0; i < n; i++) {
		r ^= c[i];
		for (j = 0; j < CHAR_BIT; j++)
			if (r & 1) r = (r >> 1) ^ CRCPOLY2;
			else       r >>= 1;
	}
	return r ^ 0xFFFFFFFFUL;
}

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<intvar>文字列計算結果を格納する変数を指定します。
<file name>整数対象ファイルを指定します。

対象バージョン

バージョン 4.60 以降で利用可能です。

戻り値

戻り値として以下の変数が定義されます。
変数名意味
result-1crc32file でファイルが開けなかった
<intvar>文字列CRC-32 の計算結果
<intvar> は、コマンド実行時に指定した任意の文字列です。

関連コマンド

種別:その他Ver機能の簡易説明
02024.78以降CRC-16-IBMを計算する。
02034.78以降CRC-16-IBMを計算する。
02044.60以降CRC-32を計算する。

使用方法

使用例

・crc32file を計算する場合
crc32file crc 'foo.bin'
if result = -1 then
    messagebox 'file open error' 'CRC32 = '
else
    sprintf '0x%08X' crc
    messagebox inputstr 'CRC32 = '
endif

サンプル

サンプルマクロはありません。

備考

特にありません。