2012-04-05 48 views
0

我正在實施一個算法,該算法將文件拆分爲股份,並且擁有股份數量。如果文件大小有一個餘數(在模數和共享數之後),我用零填充它。現在,我試圖用字符串來做到這一點,當我需要重新組合它們時,我得到了額外的填充。這與文件是一樣的嗎?或者填充零不會改變文件內容?是否填充文件更改其內容?

如果它確實發生了變化,有什麼辦法知道哪些零是填充零?

thanx!

+0

零是內容,就像一個,兩個,三個等等。將零添加到文件將會改變其內容。 – NealB 2012-04-05 14:45:46

+0

重新發明車輪? – 2012-04-05 14:47:16

回答

0

是的,向文件添加任何內容都會更改其內容。在某些情況下,這可能並不重要,但對於通用解決方案,您絕不應該依賴這一點。

在你的特殊情況下填充文件是一個壞主意。

如果您有一個固定的塊大小,每個文件部分都必須適合,那麼可以用字節填充文件部分,以指示添加了多少個字節。例如,如果您將七個字節添加爲填充,則每個填充字節應爲0x07。當你以後重新組合時,你的程序首先必須去除填充。在給出的示例中,它將讀取該部分的最後一個字節,即0x07,並且得出結論,必須從文件的末尾去除七個字節。

有兩個問題的方法:

  • 就可以達到最大填充爲0xFF = 255個字節
  • 如果沒有填充要求你必須添加僞填充的全塊,因爲你的程序無法區分填充字節和原始內容。如果文件部分以0x01結尾且不需要填充,則組合程序將從段中刪除最後一個字節,從而破壞文件。

如果你只是爲了好玩,你可以看看你可以在BSD或GNU/Linux上找到的split程序的源代碼。提示:不需要填充。