检查文件中的二进制数据是否损坏的最佳做法是什么?
有一些字符串(长度+字符)和一些MAP(映射的第一个大小,而不是字符串)。
当数据损坏时,我会进入无限循环,因为地图的大小可能非常大。
任何想法如何检查并确保二进制数据在读取之前/期间没有损坏?
最简单的解决方案是某种哈希/校验和。有几种选择:
- 一/二补加法
- 优点:非常容易实现 - 只需在数据块中添加所有 32 位 DWORD。
- 缺点: 不太擅长检测不良数据 - 一些常见的位偏差可以破坏它。
- CRC32
- 优点:它速度快,相对容易实现,哈希输出大小小。
- 缺点: 哈希大小小意味着丢失错误数据的可能性很小。
- MD5
- 优点:对于大多数意图和目的(即不是加密),它是防碰撞的。
- 比前两个慢得多,而且更复杂。不过有库。
- 奇偶校验位
- 优点:可用于检测和纠正错误。
- 缺点:可能难以正确实施,会增加数据的整体大小。
任你挑选:)