1

我正在实现一种将文件拆分为共享的算法,并且我有共享的数量。如果文件大小有余数(在与共享数的模数之后),我将用零填充它。现在,我正在尝试用字符串来做到这一点,当我需要重新组合它们时,我会得到额外的填充。文件也一样吗?或者填充零不会改变文件内容?

如果它确实改变了,有没有办法知道哪些零是填充零?

谢谢!

4

1 回答 1

1

是的,向文件中添加任何内容都会改变其内容。在某些情况下,这可能无关紧要,但对于通用解决方案,您永远不应该依赖它。

在您的特定情况下,填充文件是一个坏主意。

如果您有每个文件部分必须适合的固定块大小,则可以用指示已添加多少字节的字节填充文件部分。例如,如果您添加了 7 个字节作为填充,则每个填充字节都应为 0x07。当您稍后重新组合这些部分时,您的程序首先必须剥离填充。在给定的示例中,它将读取该部分的最后一个字节,即 0x07,并得出结论,必须从文件末尾删除七个字节。

这种方法有两个问题:

  • 您可以实现的最大填充是 0xff = 255 字节
  • 如果不需要填充,则必须添加一个完整的虚拟填充块,因为您的程序无法区分填充字节和原始内容。如果文件部分在 0x01 结束并且不需要填充,则组合程序将从段中删除最后一个字节,从而损坏文件。

如果您只是为了好玩而这样做,您可以查看split您可以在 BSD 或 GNU/Linux 上找到的程序的源代码。提示:不需要填充。

于 2012-04-19T06:34:48.390 回答