循环冗余检查如何?

时间:2016-04-04 02:24:54

标签: c crc

首先,我不确定这是否适合它,但我真的可以使用任何帮助。

所以给我一个包含字符串的ASCII文件 abcdefghijklmnopqrstuvwxyz12345-ABCDEFGHIJKLMNOPQRSTUVWXYZ12345a我应该运行CRC-15多项式(1010000001010011),它应该给我一个1a6a的答案。我只想试着如何解决这个问题。我一直在使用这个网站https://www.ghsi.de/CRC/来检查我是否理解正确,但我一直在346a。我的理解是字符串中的每个字符都包含一个特定的十六进制值,因此在使用计算器时,我用十六进制重写消息,看起来像61 62 63 64 65 66 67 68 69 6a...,然后从那里运行。

有人介意在这里帮我什么吗?

1 个答案:

答案 0 :(得分:1)

由于这是一项家庭作业,我会给出相关建议,但没有代码 - 这是学生的工作。

  1. 一次处理一个字节的字符串值,每个字节一次处理一个字节。可以解析从0x80开始的字节串中的位,并向右移位到包括0x01。这会产生一个掩码,可以与当前字节进行逐位AND运算。 (a?:operation或if语句可用于将值消歧为1或0。

  2. 模拟硬件电路对该位的作用。这可以通过简单的逐位AND,XOR,移位等来完成。

  3. 很有可能编写一个简单的函数,接受包含多项式的CRC状态作为输入。

  4. 有多种方法可以进行计算,这只是其中之一。我有几行的功能,如上所述执行此计算,但正如我在开始时所说,作业分配是学生的工作。

    祝你好运。