請先把你的好幾個PC校驗文件的計算程序亮出來看看,我的計算算法已經擺出來了,大家可以對比一下誰對誰錯。
我在網上找到一些有關的資料,在此分享一下,也作為我給出的算法的佐證:
1)實用資料——CRC計算方法--春陽頻道——這里描述了CRC16的計算方法,但同樣適合于其它多項式算法。這里同時提出需要初始化計算余數為0xFFFF。
2)CRC計算方法與C實現——在這篇文章的第2部分(硬件電路的實現方法),也明確提出“編碼、解碼前將各位初始化為1”。
3)下面這段話是我從USB 1.1協議文本的8.3.5節中抄下來的,這里也明確寫明初始化為全'1',和數據高位先參與計算的原則:
For CRC generation and checking, the shift registers in the generator and checker are seeded with an all ones
pattern. For each data bit sent or received, the high order bit of the current remainder is XORed with
the data bit and then the remainder is shifted left one bit and the low-order bit set to zero. If the result of
that XOR is one, then the remainder is XORed with the generator polynomial.
我相信你還可以從網上搜索出很多這樣的說明,我無法評判網上那些程序的正確性,但我可以證明我給出的程序是正確的。 |
|