CRC多项式采用的是 x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1。在PNG中,32位CRC初始化为全1,然后从最低有效位(1)到最高有效位(128)处理每个字节的数据。处理完所有数据字节后,对CRC进行反转(取其一补数)。该值被传输(存储在数据流中),先传输最高有效位。为了分离成字节并排序,32位CRC的最低有效位被定义为x31项的系数。关于这个问题,我理解的和不理解的内容如下。
我听说过多项式,但在这个上下文中,我有点困惑它们在这里是如何实现的。
在这种情况下,"x"代表什么?32位循环中的当前位?这就带我们来到下一个部分:
所以它说要制作一个空的32位数字(或者说全部设为1,因此是32个1),然后它说它是“从最不重要的位(1)到最重要的位(128)”进行处理的,但问题是,“最不重要的...最重要的...重要的位”是指什么 ?
其他块中的数据?
如果块设置为字节,并且这只有32位,那该怎么办?如果块数据中有超过32位的数据(肯定有)呢?
它是指“多项式”的“最不重要的...最重要的...重要的位”吗?
但是多项式究竟代表什么?x^32代表什么?
x由什么表示?
对于上述问题的任何帮助,以及使用示例IDATA块(即用基本解释计算其CRC块)的简单示例将是很好的:
0 0 2 3 IDAT 0 1 0 1 0 1 0 1 0 1 0 C
最后一个字节“C”应该被替换为它所说的32位CRC值。
有人能给我提供一个实际的例子吗?