我正在编写一个正在读取传入串行数据包的类。数据包的布局带有一个标头、一些数据,然后是一个两字节的 CRC。
我还编写了一个类,我可以在其中构建要发送的数据包。此类具有 GenerateCRC() 方法,该方法允许调用者计算他们通过调用其他方法建立的数据包的 CRC。GenerateCRC() 调用仅在正确设置数据包头和数据后才调用。因此,此方法在 for 循环中迭代数据包并以这种方式计算 CRC。
现在我正在编写代码来读取数据包,我需要通过计算 CRC 来验证它们。我正在尝试尽可能多地重用以前的“builder”类,因为当我在数据包中读取时,我想将它存储在内存中,最好的方法是使用“builder”类。但是,我在计算 CRC 时遇到了障碍。
我正在考虑两种主要方法,但我无法权衡利弊并决定一种方法。这是我的两个选择:
在我读取字节时计算 CRC。我正在读取的数据被推送到一个队列中,所以我一次弹出一个字节。我将保持运行的“总”CRC,并在读入最后一个数据字节后立即完成计算。
仅在我读入完整数据包后计算 CRC。在这种情况下,我不必保留运行总数,但我必须再次遍历数据包。我应该注意,这将允许我重用我以前编写的代码。
目前,我倾向于选项 1,并将“构建器”和“阅读器”之间的任何常见功能移动到单独的头文件中。但是,我想确保第一个选项实际上在性能方面更好,因为它确实使我的代码更加混乱。
在此先感谢您的帮助。