C# WinCE 复制文件并使用CRC校验正确性,该怎么解决
C# WinCE 复制文件并使用CRC校验正确性在WinCE上面用C#写了一个测试程序,动态生成一个几兆的文件,然后用Co
C# WinCE 复制文件并使用CRC校验正确性
在WinCE上面用C#写了一个测试程序,动态生成一个几兆的文件,然后用ComputeHash得到hash值。然后复制到SD卡中,再用ComputeHash得到一个复制文件的hash值。对比2个值检验文件的正确性。
我的问题是,同样的代码在WindowsMobile6就可以运行通过。但是放到CE6中就会得到不同的验证码。
C# codeFileStream sf = File.Open(CopiedFile, FileMode.Open);Crc32 crc32 = new Crc32();String hash = String.Empty;foreach (byte b in crc32.ComputeHash(sf)){ hash += b.ToString("x2").ToLower();}sf.Close();if (!hash.Equals(expectedCRC))//TestResult Fail
比如:
Windows Mobile 的结果:
CRCFile=4db08aa4
CopiedCRC=4db08aa4
Windows CE 的结果:
CRCFile=dfec6e7d
CopiedCRC=a8f42e63
应该从哪几个方面去考虑为什么出错?
[解决办法]建议 LZ 先用小的文件试试算法是否正确?
[解决办法]文件复制是手工复制还是代码复制?
代码复制的话注意写完要关闭文件的handle
[解决办法]文件的编码解码格式不同?
[解决办法]首先,2楼的建议得确定一下,如果是代码复制文件,是否能保证两个文件一样;
其次,要考虑一下平台的差异,比如说两个平台数据存储方式是否一样等。
[解决办法]要注意 Unicode 与 ASCII 编码。
[解决办法]问题应该在编码和解码上,都固定使用GB2312吧
[解决办法] 注意编码