1

检查文件中的二进制数据是否未损坏的最佳做法是什么?

有一些字符串(长度 + 字符)和一些地图(地图的第一个大小,而不是字符串)。

当数据损坏时,我会陷入无限循环,因为地图的大小可能是非常大的价值。

任何想法如何检查并确保二进制数据在读取之前/期间没有损坏?

4

1 回答 1

3

最简单的解决方案是某种哈希/校验和。有几种选择:

  • 一/二的补码加法
    • 优点:非常容易实现 - 只需将数据块中的所有 32 位 DWORD 相加即可。
    • 缺点:不太擅长检测不良数据 - 一些常见的位歪斜可能会破坏它。
  • CRC32
    • 优点:速度快,相对容易实现,散列输出大小较小。
    • 缺点:小散列大小意味着丢失坏数据的可能性很小。
  • MD5
    • 优点:对于大多数意图和目的(即不是加密),它是抗碰撞的。
    • 比前两个慢得多,也更复杂。虽然有库。
  • 奇偶校验位
    • 优点:可用于检测纠正错误。
    • 缺点:可能难以正确实施,增加了数据的整体大小。

随便挑吧:)

于 2012-05-12T10:26:12.887 回答