佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1489|回复: 1

CRC-16 解码程序

[复制链接]
发表于 19-7-2008 04:42 PM | 显示全部楼层 |阅读模式
CRC-16 Polynomial ==> P(x) = x16 + x15 + x2 + 1

真诚询问,请问这边的大大有没有这个相关 crc-16 的解码简单的程序?我尝试上网找过,但是都找不到。。。

关与他的 crc-16 generate 的程序我有找到,但是 logic 上我本人写不到他的解码程序。。。
//==============================================================
以下是这个 crc-16 generate 的程序

unsigned int CRC16(BYTE* Message, DWORD Len)
{

unsigned int byte;
unsigned char  k;
unsigned short ACC,TOPBIT;
    unsigned short remainder = 0x0000;
unsigned char m_pBuff[260];


memcpy(m_pBuff,Message,Len);
TOPBIT = 0x8000;
  for (byte = 0; byte < Len; ++byte)
  {
ACC = Message[byte];
remainder ^= (ACC < <8);
        for (k = 8; k > 0; --k)
        {
            if (remainder & TOPBIT)
            {
                remainder = (remainder < < 1) ^0x8005;
            }
            else
            {
              remainder = (remainder < < 1);
            }
        }
}
remainder=remainder^0x0000;
return remainder;
}
-----------------------------------------------

BYTE bCommand[7] = {0x1B, 0x10, 0x11, 0x00, 0x05};          //包头

unsigned int uiCRC;
uiCRC = CRC16(bCommand,5);                                    //CRC16校验
bCommand[5] = uiCRC/0x100;
bCommand[6] = uiCRC%0x100;



有没有大大能开方便之门让我可以完成这个 crc-16 的解码程序?如果是 C 编译的就再好不过了
非常感谢你们的援助!!

[ 本帖最后由 半夜鬼 于 19-7-2008 04:44 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 22-7-2008 04:32 PM | 显示全部楼层
int try(unsigned char * message, unsigned int remainder) {              
      return CRC16(message,strlen(message))==remainder;      
}

其實這樣就可以了。。。

[[i] 本帖最后由 tensaix2j 于 23-7-2008 09:02 AM 编辑 [/i]]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-12-2025 12:40 AM , Processed in 0.117112 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表