常见CRC算法模型如下:

CRC校验工具-在线工具

1)python

binascii.crc_hqx
crcmod.mkCrcFun

​​​​​​Python binascii.crc_hqx方法代碼示例 - 純淨天空

​​​​​​Python Examples of crcmod.mkCrcFun

crcmod – CRC calculation — crcmod v1.7 documentation

2)c#版本

public enum Crc16Mode : ushort { Standard = 0xA001, CcittKermit = 0x8408 }public class Crc16
{readonly ushort[] table = new ushort[256];public ushort ComputeChecksum(params byte[] bytes){ushort crc = 0;for (int i = 0; i < bytes.Length; ++i){byte index = (byte)(crc ^ bytes[i]);crc = (ushort)((crc >> 8) ^ table[index]);}return crc;}public ushort ComputeChecksumCanny(params byte[] bytes){ushort crc = 0;for (int i = 0; i < bytes.Length; ++i){byte index = (byte)((crc>>8) ^ bytes[i]);crc = (ushort)((crc << 8) ^ table[index]);}return crc;}public ushort ComputeChecksumCanny2(ushort crcInit,params byte[] bytes){ushort crc = crcInit;for (int i = 0; i < bytes.Length; ++i){byte index = (byte)((crc>>8) ^ bytes[i]);crc = (ushort)((crc << 8) ^ table[index]);}return crc;}public byte[] ComputeChecksumBytes(params byte[] bytes){ushort crc = ComputeChecksum(bytes);return BitConverter.GetBytes(crc);}public Crc16(Crc16Mode mode){ushort polynomial = (ushort)mode;ushort value;ushort temp;for (ushort i = 0; i < table.Length; ++i){value = 0;temp = i;for (byte j = 0; j < 8; ++j){if (((value ^ temp) & 0x0001) != 0){value = (ushort)((value >> 1) ^ polynomial);}else{value >>= 1;}temp >>= 1;}table[i] = value;//Console.WriteLine($"0x{table[i]:x2}");}}
}var crc16 = new Crc16(Crc16Mode.CcittKermit);var fileWithLocation = "D:\\21100815.165";byte[] bytes = File.ReadAllBytes(fileWithLocation);
Console.WriteLine($"file size:{bytes.Length} bytes");var crc16Ret = crc16.ComputeChecksum(bytes);
var aa = crc16Ret;
Console.WriteLine($"org CRC16:0x{aa:x2}");crc16Ret = crc16.ComputeChecksumCanny(bytes);
aa = crc16Ret;
Console.WriteLine($"Canny CRC16:0x{aa:x2}");

A Standard CRC-16 and CRC-16 Kermit implementation in C# - Sanity Free Coding - C#, .NET, PHP

CRC16CCITT算法CcittKermit相关推荐

  1. Java实现CRC16CCITT算法

    原文链接:http://blog.csdn.net/qq_26440221/article/details/66480657 最近在搞关于手环的APP,到蓝牙通讯这里是私有协议,用到了CRC校验(循环 ...

  2. crc16-ccitt算法c语言,CRC-CCITT 标准CRC16(1021) 算法校验类

    最新新遇到设备采用CRC-CCITT 标准CRC16(1021),网上很多相关文章,但是大都结果不对.以下代码来自https://bbs.csdn.net/topics/390876846回答中的代码 ...

  3. 分析21个 Qt隐藏功能和技巧

    分析21个 Qt 隐藏功能和技巧是本文将要介绍的内容,一一详细的罗列出来,以方便大家阅读方便. Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能 Q_ENUMS: ...

  4. crc16 ccitt的详细标准及其出处

    CRC16-CCITT是一个16位的循环冗余校验(CRC)算法,它是由国际电报电话咨询委员会(CCITT)制定的.该算法被广泛用于通信领域,以验证数据传输的完整性. 以下是CRC16-CCITT算法的 ...

  5. CRC16-CCITT 的算法

    http://djb69.blog.163.com/blog/static/6776323420100158391490/ 无限风光在险峰,垫几块砖瓦希望你看得更远! #include <ios ...

  6. redis中的crc16算法

    使用的是循环冗余检验算法. 1.算法原理 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 ...

  7. 【算法集中营】循环冗余校验

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验.它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制.实际上,除 数据 ...

  8. PHP CRC16 校验码的算法怎么使用

    PHP CRC16 校验码的算法如何使用 最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 010 ...

  9. CRC校验算法的解析,暨对网上的CRC详解的补充

    一.CRC的形象理解 本文面向对CRC校验有一定基础的读者,如果你不懂,请戳这里.维基百科还有图解版的. 在CRC的具体实现中,如果要计算CRC的数据很长,一般都会用到寄存器,用来保存当前的计算到的C ...

最新文章

  1. PHP中的SESSION
  2. SQL 分组统计并返回当前行
  3. java接口+Java支持多继承吗?
  4. 1-2 输出N个数的平方和立方值
  5. [转]Windows 7自带很好用的磁盘检查与修复的环境
  6. mysql group by 用法解析(详细)
  7. 细说php第四版笔记,细说PHP 学习笔记(三)
  8. JSONP原理以及示例
  9. 统计数据会说谎_统计数据对您说谎的三种方式
  10. wps文字表格制作拼音田字格模板_wps表格里怎么制作拼音田字格
  11. C# GDI+ 时钟表盘
  12. 2021 年人工智能全球最具影响力学者榜单 AI 2000 发布
  13. 汇编idiv带符合除法指令。。。。
  14. 区块链公司依靠电信主网颠覆汇款行业
  15. md5等hash算法加密解密问题
  16. HDU 2190 悼念512汶川大地震遇难同胞——重建希望小学
  17. 一个Dom绑定多个事件
  18. 学原油期货买什么书(怎么样买原油期货)
  19. Python / Micropython 获取天气数据
  20. 【mmaction2 slowfast 行为分析(商用级别)】总目录

热门文章

  1. 从磁盘到B树到B+树
  2. 小米手机怎么录制视频 手机录制视频的方法
  3. 绿之韵人民日报聚焦:加强企业管理,慢工才能出细活
  4. ubuntu18.04 下海康工业相机hikrobot_camera的使用及问题的解决
  5. 高等数学拾遗 矢量分析
  6. JAVA-企业微信报警工具类
  7. 看google如何招人
  8. 谷歌中国大范围招兵买马:涉及销售和研发等多个部门
  9. 推荐系统中的常用算法——基于Session的推荐
  10. mathtype中如何添加一个圆圈中间一个减号的符号