- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试向 Motorola HCS08 微 Controller 应用程序添加 CRC16 错误检测。但我的校验和不匹配。一online CRC calculator提供了我在 PC 程序中看到的结果和我在微型计算机上看到的结果。
它将微 Controller 的结果称为“XModem”,将 PC 的结果称为“Kermit”。
这两个古老协议(protocol)指定 CRC16 的使用方式有什么区别?
最佳答案
您可以使用相同的基本代码库实现 16 位 IBM、CCITT、XModem、Kermit 和 CCITT 1D0F。请参阅http://www.acooke.org/cute/16bitCRCAl0.html它使用 http://www.barrgroup.com/Embedded-Systems/How-To/CRC-Calculation-C-Code 中的代码
下表显示了它们的不同之处:
name polynomial initial val reverse byte? reverse result? swap result?
CCITT 1021 ffff no no no
XModem 1021 0000 no no no
Kermit 1021 0000 yes yes yes
CCITT 1D0F 1021 1d0f no no no
IBM 8005 0000 yes yes no
其中“反转字节”表示每个字节在处理之前进行位反转; ‘reverse result’表示将16位结果处理后进行位反转; ‘swap result’表示处理后结果中的两个字节被交换。
以上所有内容均通过测试向量针对 http://www.lammertbies.nl/comm/info/crc-calculation.html 进行了验证(如果这是错误的,我们都迷失了......)。
因此,在您的特定情况下,您可以通过对每个字节进行位反转、对最终结果进行位反转,然后交换结果中的两个字节,将 XModem 的代码转换为 Kermit。
[我相信,但尚未检查或计算出细节,反转每个字节相当于反转多项式(加上一些额外的细节)。这就是为什么您会在不同的地方看到对于基本相同的算法有截然不同的解释。
此外,上述方法效率不高,但适合测试。如果你想要高效,最好的办法是将上面的内容转换为查找表。]
编辑我上面所说的CCITT记录在RevEng catalogue中作为 CCITT-FALSE。有关详细信息,请参阅上面链接中我的博客文章的更新。
关于microcontroller - CRC16 校验和 : HCS08 vs. Kermit 与 XMODEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4455257/
如何在 PHP 中生成 CRC-8 校验和? 最佳答案 function crcnifull ($dato, $byte) { static $PolyFull=0x8c; for ($i=0
我正在编写代码来使用 32 位无符号整数计算 CRC16。当尝试打印执行 CRC 操作的 XOR 函数的返回值时,它总是打印 0。我尝试了各种调试方法,例如打印语句,但是,我似乎无法弄清楚! 这是我的
ThinkPHP3.2.3验证码显示、刷新、校验 ,具体如下: 显示验证码 首先在Home/Controller下创建一个公共控制器PublicController
我想将自定义验证绑定(bind)到 TimePicker 自定义控件,但下面的代码显示“无法将内容添加到 TimePicker 的对象类型。”。
目录 Spring 校验(validator,JSR-303)实现 什么是JSR-303规范 与Spring MVC结合 实体类添加
导包和配置 导入 JSR 303 的包、hibernate valid 的包 ?
我是一名优秀的程序员,十分优秀!