|
查看: 1489|回复: 1
|
CRC-16 解码程序
[复制链接]
|
|
|
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 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 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]] |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|