写入文本文件,二进制vs ascii

时间:2014-04-26 01:13:13

标签: c++ char ascii unsigned-char

所以我正在努力理解这个概念。我有一个程序读取文本文件,并将其写入另一个文件,并用无符号字符替换最常见的单词。但是,对于我的生活,我无法理解的是,我如何确定两者之间的差异。

如果我向新文件写入我读入的原始字符或对应于1-255的无符号字符值,那么当我返回原始文件内容时如何确定差异?

2 个答案:

答案 0 :(得分:1)

当您将文件写为二进制文件时,则编号为" 1253553"使用2或4个字节写入(取决于平台上int的大小)。因此,在二进制文件中,您将看到表示该数字的2或4个字节的序列。对于char s,它应该没有区别,因为每个char在一个字节上表示。

答案 1 :(得分:0)

通常,您必须有一些众所周知且明显的方法来确定文件的格式。

执行此操作的一种方法是创建自己的文件扩展名。您可以天真地期望具有该扩展名的任何文件都是您的压缩格式,但实际上很可能其他文件具有相同的扩展名(例如," .dat"可能是一个糟糕的选择)。因此,您将要采取进一步的步骤,例如让文件的前几个字节不可能存在于任何其他文件中(某些"幻数")。让我们使用两个字节,让我们只选择0xAB 0xCD作为这两个字节。

因此,当您的程序显示具有适当扩展名的文件时,打开它并读取前两个字节。如果他们是0xAB和0xCD,您可以假设您正在阅读您的特殊格式。

这不是完成此任务的一种非常强大的方式,但它是实现此目标的一种方式。如果你愿意,你可以获得更多的奢侈。

有关详细信息,您可能需要阅读the Wikipedia page on the subject。这是一个开始。