crc16

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

crc16 機能

[その他のコマンド]

CRC-16-IBM を計算します。

コマンドライン

crc16 <intvar> <string>

機能説明

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

0xA001 (x^{16}+x^{15}+x^{2}+x0)

計算結果は <intvar> に数値として格納されます。

CRC アルゴリズムの実装(C言語)を以下に示します。
static unsigned int crc16(int n, unsigned char c[])
{
#define CRC16POLY2  0x8408U  /* 左右逆転 */

	int i, j;
	unsigned long r;

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

パラメータの説明

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

対象バージョン

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

戻り値

戻り値として以下の変数が定義されます。
変数名意味
<string>>文字列CRC-16-IBM の計算結果

関連コマンド

crc16file

使用方法

使用例

・crc16 を計算する場合
str = 'this is a test string to be CRC16ed'
crc16 crc str

; Display CRC16 result asHEX
sprintf '0x%08X' crc
messagebox inputstr 'CRC16 = '

サンプル

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

備考

特にありません。