CRCの理解を確認するために、
CRC8を「参考: CRC8の計算 - プログラミングのメモ帳」の8ビットの部分だけを中実に16ビット用に直すテストを実施してみました。
もちろん「参考: CRC16テーブルで計算(CRC-CCITT) - プログラミングのメモ帳」にあるようにテーブル使用の方が高速になると思われます.
同じ結果が出ればとりあえず方法の理解は良いということだが...
(下のコードは一部タグと認識されて消えています)
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
#define _CRC16_ 0x1021
uint16_t crc16(const void *buff, size_t len)
{
uint16_t *p = (uint16_t *)buff;
uint16_t crc16;
for (crc16 = 0x0000 ; len > 0 ; len--){
crc16 ^= *p++;
for (int i = 0 ; i < 16; i++){
if (crc16 & 0x8000){
crc16 }
else{
crc16 }
}
return crc16;
}
※コメント投稿者のブログIDはブログ作成者のみに通知されます