我正在实现自己的河豚编码器/解码器版本。如有必要,我使用0x80的标准填充。
我的问题是,即使我不需要填充字符也是如此,因为对于以0x80自然结尾的文件,在解构部分我将删除此字符,但是在这种情况下,它是一个错误操作,因为te 0x80是文件本身的一部分。
当然,即使字符总数是编码块的倍数(在这种情况下为64位),也可以通过添加最终字符来解决。我可以实现此对策,但首先我想知道我是否真的需要它。
自然的结果是在考虑是否选择这种类型的char,因为文件中从不会发生(因此,上面的错误情况也不会发生),但我不确定。
谢谢!对不起这个假问题。
最佳答案
在Linux和其他文件系统上,文件可以包含任何字节的任何序列。因此,理想情况下,您不能依赖任何特定字节来确定文件结尾。 (尽管那里有EOF。!!)
我建议的是正在使用的大多数文件格式。
您可以为文件格式指定4-5个魔术字节的 header 。然后您可以保留其余字节的大小。因此,在某些字节之后,您的最后一个字节将在那里。
编辑:
在以上建议中,在编码器中,您需要在文件中添加任何新数据后更新文件的大小。
如果您不希望这样做,则可以将数据编码为垂直的数据块,然后逐包编码。您的文件将是某个数据包的编号。这些东西用于NAL单位
关于c++ - 文件可以以0x80字符结尾吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25181983/