计算CRC时,如果余数变为0,是否应该设置其他值?
When calculating a CRC, should the remainder be set to something if it becomes 0?
是否有 CRC 算法在生成过程中检查余数是否为零,并在发生这种情况时进行更改?
计算 CRC 时,如果您从 0 的初始值(CRC 值,也称为余数)开始,则 CRCd 数据中的前导零将不会产生影响。所以“[=22=][=22=][=22=]Hello”的 CRC 将与 "Hello".
相同
https://xcore.github.io/doc_tips_and_tricks/crc.html#the-initial-value
这意味着如果在计算 CRC 时值在某个点变为零,则紧随该点之后的任何零都不会影响 CRC。如果丢失一个或多个零,则 CRC 不会更改。
我想为某些数据生成 CRC,以便确定字节何时丢失。这是 CRC 的深奥应用吗?因为在查找计算 CRC 的示例时,我没有找到任何在计算过程中检查 CRC 值是否为 0 的示例,并且在该点输入了一些非零位。我认为,如果到该点的 CRC 恰好为 0,这将是确保检测到数据中某个点丢失一位或多位的唯一方法。
如果你这样做了,那么它就不再是 CRC 了。所以不行。根据定义,没有这样的 CRC 算法。
要检测 and/or 正确的丢失位,需要标记代码或水印代码之类的东西。
https://link.springer.com/article/10.1007/BF03219806
https://ieeexplore.ieee.org/document/866775
Marker codes和Watermark codes通常在硬件中实现,例如硬盘驱动器中的读/写逻辑,并在位级和媒体接口上运行。附加位与数据位混合,以允许检测丢失的同步或信号,否则可能会导致丢失或插入位。这是一个更好的 link 来描述这个。 turbopaper.pdf 文件提到了 LDPC,低密度奇偶校验码,Wiki 有一篇关于它的文章。请注意,在接收或读取数据时,Marker |水印代码首先在硬件接口处理,LDPC(或 CRC 或 Reed Solomon)在硬件检测到没有丢失或插入的位后完成。
是否有 CRC 算法在生成过程中检查余数是否为零,并在发生这种情况时进行更改?
计算 CRC 时,如果您从 0 的初始值(CRC 值,也称为余数)开始,则 CRCd 数据中的前导零将不会产生影响。所以“[=22=][=22=][=22=]Hello”的 CRC 将与 "Hello".
相同https://xcore.github.io/doc_tips_and_tricks/crc.html#the-initial-value
这意味着如果在计算 CRC 时值在某个点变为零,则紧随该点之后的任何零都不会影响 CRC。如果丢失一个或多个零,则 CRC 不会更改。
我想为某些数据生成 CRC,以便确定字节何时丢失。这是 CRC 的深奥应用吗?因为在查找计算 CRC 的示例时,我没有找到任何在计算过程中检查 CRC 值是否为 0 的示例,并且在该点输入了一些非零位。我认为,如果到该点的 CRC 恰好为 0,这将是确保检测到数据中某个点丢失一位或多位的唯一方法。
如果你这样做了,那么它就不再是 CRC 了。所以不行。根据定义,没有这样的 CRC 算法。
要检测 and/or 正确的丢失位,需要标记代码或水印代码之类的东西。
https://link.springer.com/article/10.1007/BF03219806
https://ieeexplore.ieee.org/document/866775
Marker codes和Watermark codes通常在硬件中实现,例如硬盘驱动器中的读/写逻辑,并在位级和媒体接口上运行。附加位与数据位混合,以允许检测丢失的同步或信号,否则可能会导致丢失或插入位。这是一个更好的 link 来描述这个。 turbopaper.pdf 文件提到了 LDPC,低密度奇偶校验码,Wiki 有一篇关于它的文章。请注意,在接收或读取数据时,Marker |水印代码首先在硬件接口处理,LDPC(或 CRC 或 Reed Solomon)在硬件检测到没有丢失或插入的位后完成。