2011-10-18 57 views

回答

2

.net微框架有Utility.ComputeCRC方法,儘管我不確定算法實際使用什麼。它當然不會使用OP中的一個。 Utility.ComputeCRC

1

嘗試從http://vbcity.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.47.04.55/CRC_5F00_Lib.zip CRC實施。這是在http://vbcity.com/forums/t/111345.aspx討論的實現。

您可以在http://www.lammertbies.nl/comm/info/crc-calculation.html上驗證CRC計算的正確性。

上面提到的vbcity討論鏈接實際上實現了由http://www.lammertbies.nl/comm/info/crc-calculation.html給出的C++庫的轉換。

我發現這對我的CRC 16實現正常工作。

短的代碼段是

 ushort crcno = CRC.CRC16(stryourdata); 
     Byte[] crcbytes = BitConverter.GetBytes(crcno); 
+0

謝謝,看起來很有希望。還發現了另一個更簡單的實現。我會比較它們,但我喜歡這個更好的選擇。 – pritaeas

+0

只是爲了通知其他人,BitConverter.GetBytes在Micro Framework上還沒有。 – pritaeas

1

你可以使用你指的是代碼。 HashAlgorithm僅用作接口,您可以放棄它,而不會損害CRC實現本身的功能。

將「protected void void HashCore(byte [] buffer,int start,int length)」 更改爲「public void CalcCrc32(byte [] buffer,int start,int length)」。

public uint CrcValue應該返回crcValue不變。

刪除所有其他方法和屬性。

+0

刪除了接受的答案,因爲ComputeCRC函數是更好的答案(恕我直言)。 – pritaeas