CRC-16 XMODEMチェックサム
123456789の9文字はCRC-16/XMODEMで31c3、10進数で12739になります。昔のファイル転送やファームウェアで使われる初期値0のCCITT方式の公式な確認値です。任意のテキストを貼り付けて計算でき、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- 123456789
- 結果
- 31c3
- Crc16
- 31c3
- Hex
- 31c3
- 10進数
- 12,739
CRC-16/XMODEMは、古典的なファイル転送フレーミング、組み込みファームウェア、暗号学的ハッシュではなくコンパクトな完全性ワードを必要とするプロトコルスタックで使われる16ビットの巡回冗長検査です。技術者・学生・サポート担当が短い文字列に対して教科書どおりの結果を求める場面では、CCITT生成多項式0x1021、初期レジスタ0(XMODEMのシード)、ビット反射なし、最終XOR 0—ASCIIの1から9までの数字に対する検査値が16進の31C3となるCRC-16/XMODEMプロファイルそのものが求められます。本CRC-16 XMODEMチェックサムツールは空でないテキストを受け取り、UTF-8として符号化し、決定的なシフトとXORのループを実行して、16ビットのチェックサムを小文字4桁の16進とともに10進値と短い要約で返します。
多項式0x1021のCRC-16/XMODEMが計算するものとhexワードが重要な理由
巡回冗長検査はメッセージを二元ガロア体上の多項式として扱い、固定の生成多項式で割った余りをチェックサムとします。CRC-16では余りが16ビット幅のため結果全体が1ワードに収まり、自然に4桁の16進で表記されます。XMODEMや多くのCCITT系例で使われる生成多項式は0x1021で、xの16乗+xの12乗+xの5乗+1に展開されます。
重要な点として、XMODEMプロファイルはレジスタをオール1ではなく0で初期化します。ソフトウェアでは各入力バイトを16ビットレジスタの上位8ビットへ排他的論理和し、左へ8回シフトし、上位ビットが立っているときに生成多項式と排他的論理和します。
本ランディングは常に初期値0・最終XOR 0の非反射アルゴリズムを用い、9バイトASCIIの1から9までの文字列に対する文書化された検査値は31C3です。小文字hexを返すことで、大文字や0x接頭辞を議論せずデータシート・プロトコルダンプ・継続的インテグレーションのフィクスチャへ貼り付けやすくなります。
応答には10進整数、多項式文字列0x1021、アルゴリズムラベルCRC-16/XMODEM、UTF-8バイト数、元テキストもエコーされ、クライアントはメタデータを再計算せず監査行を表示できます。
CRC-16は衝突耐性がなく鍵付きでもないため、真正性の証明ではなくフレーミングや偶発的破損の検査として扱い、検索意図が2バイトCRCではなく暗号学的ハッシュならSHA系ダイジェストを選んでください。
CRC-16 XMODEMが役立つ場面
ファームウェア作者やシリアルプロトコルの学習者は、言語ごとにシフトループを書かずにゼロシードCCITT多項式に対する手計算の余りを検証するためにCRC-16 XMODEMチェックサム計算機を使います。
教育プラットフォームやLMSプラグインは、空メッセージに0を返すのではなく空入力を拒否する決定的オラクルを必要とし、自動採点が未回答と真のゼロチェックサムを区別できるようにします。
CRC-16 XMODEM、CRC16 XMODEM計算機、CCITT多項式0x1021チェックサムで順位付けするコンテンツサイトは、無料経路が有料自動化経路と同一の純粋モジュール上でバイト単位で一致するライブツールから恩恵を受けます。検証失敗は拒否後に残高を消費しません。
検索意図が16ビットXMODEMフレーミング検査を超えるときだけCRC-8・CRC-32・暗号学的ハッシュのランディングと組み合わせ、本ページはゼロシード多項式0x1021のCRC-16/XMODEMに集中させ、家族名は共有しても検査ベクトルが異なるMODBUS・IBM・CCITT-FALSEとSEO意図が衝突しないようにしてください。
活用例
教室でのCRC余りの演示
教員が古典値123456789 → 31C3を示し、学生がCRCライブラリを入れずに他の短い文字列を再計算できます。
フレーミングコード向けCIフィクスチャ
パイプラインが決定的なCRC-16/XMODEMのhex出力と空入力エラーを固定し、多項式やinitの誤変更を即座に失敗させます。
よくある質問
このツールはどのCRC-16パラメータを使いますか?
CRC-16/XMODEM:多項式0x1021(CCITT)、init 0x0000、反射なし、xorout 0x0000。ASCII 123456789の文書化された検査値は31C3です。
テキストが空の場合はどうなりますか?
空でない文字列が必須であり、空入力は成功したゼロチェックサムとしては扱われません。
CRC-16/XMODEMはCRC-16/CCITT-FALSEと同じですか?
いいえ。 どちらも多項式0x1021ですが、XMODEMはレジスタを0で初期化しCCITT-FALSEは0xFFFFを使うため検査値が異なります。本ツールはXMODEMのみを実装します。
アクセント付きの文字や日本語はどう数えられますか?
テキストは計算の前にUTF-8に変換されます。複数のバイトになる文字はそのすべてのバイトが計算に入り、同じUTF-8のデータを受け取った組み込み機器と同じ結果になります。
CRC-16 XMODEMでファイルの真正性を証明できますか?
証明できません。2バイトのCRCは衝突に弱く、鍵も使わないので、伝送中の偶然の誤りを見つける用途に限られます。暗号としての確認が必要なら、SHA系の方式を選んでください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/crc16-xmodem \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"123456789"}'const res = await fetch("https://api.kit.forhosting.com/enc/crc16-xmodem", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "123456789"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/crc16-xmodem",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "123456789"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/crc16-xmodem", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"123456789"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"123456789"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/crc16-xmodem", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "123456789"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.crc16_xmodem",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空入力はinvalid_inputで拒否され、欠落フィールドと真のゼロチェックサムを混同しません。ブラウザの無料経路とプリペイドAPIは同一の純粋モジュールを共有するため、教室用フィクスチャと本番パイプラインは同じ文字列に対して常に同じhexワードで一致します。
多項式0x1021のCRC-16/XMODEMが計算するものとhexワードが重要な理由
この一点が、同じ多項式でもinit 0xFFFFを使うCRC-16/CCITT-FALSEとCRC-16/XMODEMを分け、同じペイロードでも検査値が異なります。
入力契約、空文字列エラー、JSON応答の形
チェックサムしたい空でない任意の文字系列です。文字列はCRCループの前にUTF-8符号化され、マルチバイト文字は組み込み機器が同じUTF-8ストリームを受けた場合とまったく同じコードユニットバイトを寄与します。別例:Helloはcbd6。成功経路と空入力エラーの両方を継続的インテグレーションに固定し、多項式やinitの誤変更が気付かれずに出荷されないようにします。POSTで必須の文字列フィールドtextを1つ持つJSON本体を送ってください。同じフィールドにinput、value、s、data、message、payloadの別名を受け付けるため、SDKスタブとフォーム送信の両方に柔軟です。text欠落・非文字列・空文字列はいずれもinvalid_inputで失敗し、空でない文字列が必要である旨が明示されます。これらの失敗はプリペイドAPIでは課金されません。成功時の本体には、いずれも同じ4桁小文字16進チェックサムのresult・crc16・hex、0から65535までの整数decimal、固定のpolynomial 0x1021、固定のalgorithm CRC-16/XMODEM、UTF-8長のinput_bytes、入力をエコーするtext、バイト数とhex結果を要約するmessageが含まれます。古典的フィクスチャ:1から9の数字のtextはcrc16 31c3・input_bytes 9。任意のnullフィールドはnullとして出さず省略し、宣言的レンダラ契約に沿ったきれいなWebフォームに合わせます。ペイロードはWorker isolateのitem呼び出しに適した通常のテキストサイズに留め、本ツールは短い文字列とプロトコル断片向けであり、数メガバイトのバイナリには向きません。
CRC-16 XMODEMチェックサムAPIが役立つ場面と料金の仕組み
単発確認にはブラウザ無料ツールを、安定した契約が必要なバックエンド・サーバーレス関数・SDKからは残高下のプリペイドKIT APIを、成功itemあたり$0.002で呼び出してください。
連携の活用例
XMODEMとシリアルプロトコルの検査
機器ログや単体テストベクトルと比較する前に、ペイロード文字列が多項式0x1021・init 0の下で期待される16ビットCRC-16/XMODEMトレーラーを生成することを確認します。
技術的な質問
テキストのCRC-16 XMODEMチェックサムはどう計算しますか?
空でない文字列フィールドtextを持つJSONを送ってください。APIは文字列をUTF-8符号化し、多項式0x1021・init 0x0000のCRC-16/XMODEMを実行し、result・crc16・hexに小文字4桁hexでワードを返します。
CRC-16 XMODEMチェックサム計算機は無料ですか?
ブラウザツールはお使いの端末で無料です。API呼び出しは成功itemあたり$0.002のプリペイドKIT残高を使い、検証失敗は課金されません。