计算 HDLC 帧的 FCS(CRC)

2024-01-29

我有以下框架:

7e  01 00  00  01  00  18  ef  00  00  00   b5   20 c1 05 10 02 71 2e 1a c2 05 10 01 71 00 6e 87 02 00 01 42 71 2e 1a 01 96 27 be 27 54 17 3d b9 93 ac 7e

如果我理解正确的话,那么就是计算 FCS 的帧的这一部分:

010000010018ef000000b520c1051002712e1ac205100171006e8702000142712e1a019627be2754173db9

我尝试将其输入多个在线计算器,但无法从上述数据中生成 0x93ac。

http://www.lammertbies.nl/comm/info/crc-calculation.html http://www.lammertbies.nl/comm/info/crc-calculation.html输入类型为十六进制。

0x93ac是如何得到的?

Thanks,

Barry


而是为那些在寻求建议时来到这里的其他人做出回答。

关键是密切相关的 ITU-T 建议书(例如 Q.921,已经在线提供相当长一段时间了)中的几点内容:

1. 首先发送(并因此接收)最低位

这种遗留行为与日常生活惯例相反,日常生活惯例是按照读取的顺序首先写入最高位数字,并且所有通用在线计算器和库都使用常规顺序执行计算,并提供可选设置以方便相反的顺序。 因此,你必须询问在线计算器

  • 在执行计算之前反转您以“常规”格式输入的消息中的位顺序,
  • 反转结果的位顺序,以便将它们输入 与消息本身相同的顺序

相当合理的是,一些计算器只为两者提供一个通用设置。

这就是上一个答案中推荐的设置“反向数据字节”和“最终 XOR 之前反向 CRC 结果”的原因;

2. CRC计算的结果在发送前必须进行位反转

位反转是“xor by 0xffff...”的另一个名称。在将 CRC 计算结果作为消息 FCS 发送之前对其进行位反转(消息的最后两个字节,示例中的“93 ac”)是有目的的。 详情请参阅第 4 点。

这导致设置“最终值 ffff”,其名称非常具有误导性,因为它实际上定义了与计算结果进行异或的模式。由于多种 CRC 类型需要此类操作,因此只有异或模式从 0(无操作)到 0xfff...(完全反转)变化,通用计算器/库提供它以简化使用。

3.计算必须包括对0xffff前导序列的处理

这就是“初始值ffff”这一点的原因。

4. 在接收(检查)端,建议推送完整的消息,即包括FCS,通过CRC计算,并期望结果为0x1d0f

这背后有一些巧妙的想法:

  • CRC 算法的内在属性是

    CRC( x.CRC(x) )

    始终为 0(x 代表原始消息,“.”代表串联)。

  • 通过计算运行完整的消息而不是 仅计算消息本身并与 FCS 进行比较 单独接收意味着算法(甚至电路)更简单 在接收端。

  • 然而,很容易犯编码错误,导致结果变成 0。幸运的是,再次感谢 CRC 算法的内在属性,

    CRC( x.(CRC(x))' )

    产生一个独立于 x 且不同于 0 的常量值(至少对于我们在这里讨论的 CRC-CCITT 而言)。 “'”符号表示第 2 点中要求的位反转。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 HDLC 帧的 FCS(CRC) 的相关文章

随机推荐

  • 找不到有角度的日期管道

    我想在 HTML 中使用 DatePipe timeslot date 但我得到了错误 error NG8004 No pipe found with name date 我的 app module ts 导入公共模块 import Com
  • 无法添加配置转换

    I have 创建了构建配置 http www tomot de en us article 5 asp net how to use web config transforms to replace appsettings and con
  • Scala 中更好的字符串格式

    由于有太多的争论 String format很容易变得太混乱 有没有更强大的方法来格式化字符串 就像这样 This is number string format number gt 1 或者由于类型问题这是不可能的 format我认为需要
  • 在 SQL 中,如何生成 5!56 的每种可能的唯一组合?

    我有一个表 元素 其中有一列 数字 类型为 SMALLINT 其中包含数字 1 到 56 如何使用 SQL 语句生成从 1 到 56 的每种可能组合的 5 个数字的唯一集合 在 APL 编程语言 中 一个简单的二元函数 5 56 就可以解决
  • 有什么方法可以跳过 php 中包含文件的致命错误吗?

    如果我将一个文件包含到 php ini 中如果该 php 中有任何致命错误 那么有什么方法可以跳过该错误 我需要包含此 somefile php 文件 它可能会返回致命错误 对于某些主机 我想为那些主机跳过这个文件 请给我建议 有了这个 您
  • JAX-RS 中日期的 @DefaultValue:now() 和 MAX

    我有一个查询参数如下 GET public Response myFunction QueryParam start final LocalDate start QueryParam end final LocalDate end 为此 我
  • 如何在 Kafka 流中创建一个以 HashMap 作为值的状态存储?

    我需要创建一个状态存储 其中 String 键 HashMap 作为值 我尝试了以下两种方法 First method StateStoreSupplier avgStoreNew Stores create AvgsNew withKey
  • 选项卡面板可在移动视图中滑动吗?

    我有一个选项卡式菜单 我想要选项卡式菜单 ul class tabs 可在移动视图中滑动 EDIT 我找到了一个关于使用的片段Slick JS 我从来不知道这个JS 但我希望它应用这个codepen https codepen io gbh
  • Angular [ngForOf] 用法是什么

    我正在处理的一个项目有下面的代码 你能告诉我它的作用吗 我知道关于 ngFor and ngIf 但是这些是什么 ngForOf topicdata and ngFor let topic 我可以以更好的方式简化下面的代码吗
  • Kubernetes:如何获取节点的磁盘/CPU指标

    在不使用 Heapster 的情况下 有没有办法收集有关 Kubernetes 集群中节点的 CPU 或磁盘等指标 Heapster 首先是如何收集这些指标的 Kubernetes监控在文档中有详细介绍here http kubernete
  • WS-I Reliable Secure Profile 的 Javascript 实现

    我正在使用 NET 4服务器端实现 http msdn microsoft com en us library ee818238 aspx of 可靠的安全配置文件 http www ws i org deliverables workin
  • 使用 pandas 中的映射逻辑替换列值(实现函数的问题)

    我有一个数据框如下 我想要的是生成另一列 freq 其中行将根据以下逻辑具有值 If Mode列值以数字开头m 然后填写数字n in the freq column m 1 n 12 m 6 n 4 m 7 n 2 m 8 n 1 数据框
  • Ionic 4 和 Cordova 不可用

    我的 Android 设备上的 cordova 有问题 我在 github issues 和网络上搜索了解决方案 但没有任何对我有用的解决方案 在我的代码中我有this platform ready 以及例如this splashScree
  • Swift 3、iOS 10.3 - 在启动屏幕期间预加载 UIWebView

    我有一个应用程序 其中有multipleWebView 位于不同的 ViewController 上 但加载每个视图大约需要 3 秒 是否可以在启动屏幕期间开始加载网页 或者当用户位于 FirstViewController 上的网页上时加
  • Spyder 插件 (spyder-autopep8)

    所以我尝试从这里安装spyder autopep8插件 https github com spyder ide spyder autopep8 https github com spyder ide spyder autopep8 我下载并
  • gpumat 和 mat 错误

    当我编译这个例子时 include
  • 使用 LINQ 查找目录中的重复文件

    我目前正在编写一个程序 可以使用用户给定的参数从各种来源批量下载图像 我的问题是我不希望发生重复 我应该指出 我一次处理的海量下载最多为 100 个 不是那么大 并且每个文件都有不同的名称 因此简单地按文件名搜索是行不通的 我需要检查哈希值
  • 如何使用 WatchKit 触发通知

    In the WatchKit 开发者指南 https developer apple com library prerelease ios documentation General Conceptual WatchKitProgramm
  • 在新的 CRA 中使用 babel 转译包后 CSS 和图像文件不会出现

    我将 CSS 导入为 import style css 以及 CSS 中具有背景 URL 属性的图像 我想要的是制作一个包 将其发布到 npm 而无需构建 然后将其安装到新的 CRA 中并在那里使用它 在react中使用自制的npm包 编译
  • 计算 HDLC 帧的 FCS(CRC)

    我有以下框架 7e 01 00 00 01 00 18 ef 00 00 00 b5 20 c1 05 10 02 71 2e 1a c2 05 10 01 71 00 6e 87 02 00 01 42 71 2e 1a 01 96 27