アプリ版:「スタンプのみでお礼する」機能のリリースについて

Cにて16ByteデーターをCRC8にかけたいのですがアルゴリズムがよく理解できません。
どなたかプログラムを教えていただけませんでしょうか? 
また、12Byteのときはプログラムが変わるのでしょうか?

A 回答 (1件)

★CRC8 って初めて聞きました。


・私は CRC16、CRC32、CRC64、CRC128 なら聞いた事があります。
 また、CRC16、CRC32 の計算を行うルーチンも作成した経験がありますが CRC8 は初めてです。
 なお、CRC16 の『16』は 16 ビットという意味ですが、CRC8 の 8 も 8 ビットのことですよね。
・CRC16 の場合は 16 ビット以内のサイズなら同じ数値になる確率がかなり低くなります。
 このことから CRC8 では 8 ビット(256バイト)以内のサイズなら同じプログラムでかまわないと
 思います。つまり、16 バイトでも 12 バイトでも同じ CRC8 で OK です。
・『CRC8 計算』キーワードでネット検索すると多数見つかりますね。
 検索した情報から CRC 生成多項式は
 CRC8……X^8 + X^7 + X^2 + 1
 CRC16…X^16 + X^12 + X^5 + 1
 http://www.sumtak.co.jp/japanese/products/linear …
 ↑
 6 ページより抜粋
・CRC8 の実装方法は次のリンクを参考にして下さい。
 http://kone.vis.ne.jp/diary/diaryb07.html
 ↑
 一番下より抜粋すると『CRCの国際標準』として、以下の値がある。
 CRC-12 = x12 + x11 + x3 + x2 + x1 + 1
 CRC-16 = x16 + x15 + x2 + 1
 CRC-32 = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
 CRC-CCITT = x16 + x12 + x5 + 1
・今回は CRC8 ですので
 CRC8 = X8 + X7 + X2 + 1
 CRC8 = 110000101(2進数)
 となり、0x185 が多項式の値です。でも 8 ビットですので上位の 1 ビットを除いた 0x85 で計算します。
 CRC8 の多項式と 0x85 と他の CRC16 などのソースを元にプログラムしてみて下さい。
・以上。

参考URL:http://kone.vis.ne.jp/diary/diaryb07.html
    • good
    • 1
この回答へのお礼

ありがとうございます。
CRC16,32は参考書等いろいろ見つかられたのですがCRC8について見つける事が出来なく困っていました。

お礼日時:2007/06/13 09:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A