首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组CRC计算方法

分组CRC计算方法
EN

Stack Overflow用户
提问于 2013-10-01 03:44:22
回答 1查看 212关注 0票数 0

我正在编写一个类,它正在读取传入的串行数据包。这些数据包由一个头、一些数据组成,后面跟着一个两个字节的CRC。

我还编写了一个类,可以在其中构建要发送的数据包。这个类有GenerateCRC()方法,该方法允许调用方为他们通过调用其他方法构建的数据包计算CRC。GenerateCRC()调用只能在正确设置数据包报头和数据之后调用。因此,该方法在for循环中遍历数据包,并以这种方式计算CRC。

现在我正在编写代码来读取数据包,我需要通过计算一个CRC来验证它们。我试图尽可能地重用以前的"builder“类,因为当我在包中阅读时,我希望将它存储在内存中,最好的方法是使用"builder”类。然而,我在计算CRC方面遇到了困难。

有两个主要的方法,我正在考虑,我有困难权衡利弊和决定一种方法。以下是我的两个选择:

  1. 在读取字节时计算CRC。我正在读取的数据被推送到队列中,因此我每次弹出一个字节。我将保持一个运行的“总计”CRC,并在读取最后一个数据字节后立即完成计算。
  2. 计算CRC只有一次,我已经在完整的数据包中阅读。在这种情况下,我不需要保持运行总数,但是我必须再次遍历数据包。我应该指出,这将允许我重用我以前编写的代码。

目前,我倾向于选择1,并将"builder“和"reader”之间的任何通用功能移到单独的头文件中。但是,我希望确保第一个选项实际上是性能更好的选项,因为它确实会使我的代码变得更加混乱。

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-01 15:57:08

我会选择#2,这允许通过在两端使用相同的代码对代码进行更简单的验证,并且允许使用速度更快的CRC算法一次处理4或8个字节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19107579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档