单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:1896|回复:3
打印上一主题下一主题

CRC-16源码 C语言

[复制链接]
跳转到指定楼层
楼主
ID:168748发表于 2017-3-7 10:26|只看该作者回帖奖励
  1. #include "stdafx.h"
  2. #include "iostream"

  3. typedef unsigned short ushort;
  4. typedef unsigned char uchar;
  5. using namespace std;
  6. ushort checksum(uchar* ,uchar );   //传字符串,字节数,
  7. int main()
  8. {
  9.        uchar array[3]={0x01,0x02,0x03};
  10.        uchar len=sizeof(array);
  11.        ushort CRC=checksum(array ,len );
  12.    cout<<hex<<CRC<<endl;
  13.        return 0;
  14. }
  15. ushort checksum(uchar* array,uchar len)
  16. {
  17.    ushort CRC=0xFFFF;
  18.    for(uchar i=0;i<len;++i)
  19.    {
  20.          CRC=CRC^(ushort)array[i];
  21.          for(uchar j=0;j<8;++j)
  22.          {
  23.             
  24.              if((CRC& 0x0001)==0x0001)
  25.              {
  26.                    CRC=(CRC>>=1)^0xA001;
  27.                    ;
  28.              }
  29.              else
  30.            CRC>>=1;
  31.          }
  32.    }
  33.    return CRC;
  34. }
复制代码
沙发
ID:285686发表于 2020-4-7 14:45|只看该作者
非常好,和计算器计算的一样。代码好!
板凳
ID:285686发表于 2020-4-7 14:46|只看该作者
非常好,我在找A001的,终于找到了。8005的计算结果不一样。
地板
ID:64931发表于 2024-5-19 21:58|只看该作者
谢谢分享

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网