CRC16校验的问题,急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!

bjluoagzn 2006-09-13 05:12:01
void computeCRC(IN unsigned char* pInBuffer, IN unsigned short length, OUT unsigned char *pTransmitFirst, OUT unsigned char *pTransmitSecond)
函数功能:
计算TYPEB的数据帧的CRC

参数说明:
pInBuffer 指向待处理的数据缓冲区
length 数据长度 ,不计入crc本身的2字节
pTransmitFirst 指向要首先发送的CRC字节(低字节)
pTransmitSecond 指向第二个CRC字节(高字节)
返回值:


备注:

void computeCRC(unsigned char* pInBuffer, unsigned short length, unsigned char *pTransmitFirst, unsigned char *pTransmitSecond)
{
unsigned char ch;
unsigned short wCrc;
unsigned short temp1,temp2,temp3,temp4;
wCrc = 0xFFFF; // ISO/IEC 13239 (formerly ISO/IEC 3309)

do {
ch = *pInBuffer++;
ch = (ch^(unsigned char)(wCrc & 0x00FF));
ch = (ch^(ch<<4));
temp1=(wCrc >> 8);
temp3=((unsigned short)ch << 8);
temp4=((unsigned short)ch<<3);
temp2=((unsigned short)ch>>4);
wCrc=temp1 ^temp2^temp3^temp4;
} while (--length);

wCrc = ~wCrc; // ISO/IEC 13239 (formerly ISO/IEC 3309)
*pTransmitFirst = (unsigned char)(wCrc & 0xFF);
*pTransmitSecond = (unsigned char)((wCrc >> 8) & 0xFF);
return;
}
//=======================================================================
//源文件结束




能帮我把上面的C语言程序转换成Delphi吗?
...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjluoagzn 2006-09-14
  • 打赏
  • 举报
回复
自己搞定了
bjluoagzn 2006-09-13
  • 打赏
  • 举报
回复
"05 fe 00" crc为6919,可我从网上找的没一个对的
oushengfen 2006-09-13
  • 打赏
  • 举报
回复
我晕,这个应该会翻译吧
postren 2006-09-13
  • 打赏
  • 举报
回复
有必要转换上面的代码吗?
Delphi也有相应的代码实现吧,楼主搜搜看

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧