2010-05-27 38 views
2

我需要以二進制格式序列化一些數據以提高效率(數據記錄通常包含10-100MB文件),並且我正在制定格式化的詳細信息。我想知道是否真的需要擔心文件損壞/錯誤糾正/等。二進制文件格式:需要糾錯?

什麼情況下文件損壞可能發生?我應該如何將腐敗的可靠性轉化爲我的二進制格式?或者我應該用一些糾錯碼來包裝我的nonrobust-to-corruption字節流? (有什麼建議嗎?我正在使用Java)或者我應該不擔心這一點?

編輯:初步二進制格式,因爲我有它現在包含了一堆可變長度段的,所以我稍微擔心,如果我曾經有數據損壞,那麼在閱讀回來,我能得到不同步,無法恢復+我失去了文件的其餘部分。

+0

數據有多重要?如果字節1發生錯誤,整個文件丟失了?你能恢復大部分其他數據嗎? – Randy 2010-05-27 13:31:56

+1

我認爲如果你需要一些健壯性,HAMMING代碼是一個很好的選擇。 fww – Randy 2010-05-27 13:34:03

+0

HAMMING代碼處理位,它可能是計算密集型的。 XOR冗餘(如在RAID中)可能是首選。 – 2010-05-27 13:37:30

回答

2

您至少應該添加校驗和。 BER在現代硬盤上很好,但對其他媒體來說並非如此。寫入過程中的功耗通常會損壞文件結尾。如果數據很重要,則需要糾錯碼,tripple和無緩衝寫入等來提交事務。

EXE沒有錯誤更正,而單個位更改會產生嚴重後果。

如果要通過TCP傳輸文件,則可能會假定爲零錯誤。

+0

校驗和在哪裏?每個重要塊的校驗和均爲 – 2010-05-27 13:36:46

+0

。塊越小,故障時數據丟失的數量就越少。 – 2010-05-27 14:39:41

1

我已經看到它發生了一次或兩次,通過互聯網傳輸的文件已損壞。您可以使用校驗和來執行錯誤檢測,例如SHA256。

+0

校驗和在哪裏? – 2010-05-27 13:37:27