二进制文件格式:需要纠错吗?

时间:2010-05-27 13:30:28

标签: robustness error-detection

我需要以二进制格式序列化一些数据以提高效率(数据记录通常是10-100MB文件),我正在计算格式化细节。我想知道我是否需要担心文件损坏/错误纠正等等。

文件损坏可能发生的情况是什么?我是否应该将腐败的稳健性构建为二进制格式?或者我应该用一些错误纠正代码包装我的非粗暴到损坏的字节流? (有什么建议吗?我正在使用Java)或者我应该不担心这个?

编辑:初步的二进制格式,正如我现在所说,包含一堆可变长度的段,所以我有点担心如果我确实有数据损坏,那么在阅读它,我可能会失去同步,无法恢复+我丢失了文件的其余部分。

4 个答案:

答案 0 :(得分:2)

您至少应该添加校验和。 BER在现代硬盘上很好用,但其他媒体则不然。写入期间的功率损耗通常会破坏文件结束。如果数据很重要,您将需要纠错码,三重和无缓冲写入等来提交事务。

EXE没有纠错,而单一位改变会产生严重后果。

如果要通过TCP传输文件,则可能假设没有错误。

答案 1 :(得分:1)

我已经看到,通过Internet传输的文件损坏了一两次。您可以使用校验和进行错误检测,例如SHA256。

答案 2 :(得分:1)

您可能对notes on error detecting codes in HDF5感兴趣。何处以及何种校验和取决于您访问和更新数据的方式以及检测错误的有用块。

答案 3 :(得分:-1)

我选择了Reed-Solomon encoding system. Google Java implementation库中有一个相当容易使用的zxing Java版本。