您现在的位置: 爱51代码网 >> 范文 >> 文章正文
C++产生CRC 对照码源代码

C++产生CRC 对照码源代码

我这里有应该是C++的但要怎样转成c#的

const u16 FCS_START = 0xffff; 

const u16 FCS_FINAL = 0xf0b8; 

const u16 FCSTAB[256] = {
     0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
     0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
     0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
     0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
     0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
     0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
     0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
     0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
     0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
     0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
     0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
     0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
     0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
     0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
     0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
     0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
     0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
     0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
     0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
     0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
     0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
     0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
     0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
     0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
     0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
     0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
     0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
     0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
     0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
     0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
     0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
     0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
};

/*

*****************************************************************************
*

  * 功能描述:产生CRC 对照码

  * 输入参数: fcs:  前次crc16 的代码

                src: 本次参加运算的数据,单字节

  * 输出参数:  无

  * 返回值:       CRC 对照码

*****************************************************************************
*
  */
u16 GetFcs(u16 fcs, u8 src)
{
  u16 xor = 0;
  u16 iresult = 0;

  xor = fcs;
  xor ^= src;

     iresult = (((fcs) >> 8) ^ FCSTAB[xor & 0x00ff]);

  return iresult;
}

/*

*****************************************************************************
*

  * 功能描述:CRC 校验

  * 输入参数: psrc:  待校验的数据

                ilen: 数据长度

  * 输出参数:  无

  * 返回值:        0:  成功

CB680-C1001    Rev. 2.00                                                                                                

       -1: 失败

*****************************************************************************
*
  */
s16 CRC_CheckCrc(u8 *psrc, u16 ilen)
{
  u16 crc = 0;
  s16 iresult = 0;;

  crc = FCS_START;

  while(ilen-- != 0)
  {
   crc = GetFcs(crc,*psrc);
   psrc++;
  }

     if (FCS_FINAL != crc)
     {
           iresult = -1;
     }
     else
     {
           iresult = 0;
     }
  return iresult;
}

/*

*****************************************************************************
*

  * 功能描述:产生CRC 校验码

  * 输入参数: psrc:  待校验的数据缓冲区指针

                  ilen: 数据长度

  * 输出参数:  无

  * 返回值:        校验码                                                                          

*****************************************************************************
*
   */
u16 CRC_MakeCrc(u8 * psrc, u16 ilen)
{
   u16 crc = 0;

   crc = FCS_START;

   while(ilen-- > 0)
   {
            crc = GetFcs(crc,*psrc++);
   }

   crc ^= FCS_START;

   return crc;

hi can you converted this function in php

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    我们的系统检测到您的计算机
    win7旗舰版,以前可以用U盘安
    SQL SERVER 安装出现 “性能
    SQLSERVER2008在存储过程中执
    excel导入mssql数据库数字成
    sql 2008 远程过程调用失败 
    mssql左连接显示左表全部数据
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |