检查文件数据是否为二进制

时间:2010-04-23 00:47:00

标签: c++

当我将数字写入二进制文件时,它将不会显示。但如果是角色,它确实如此。为什么?你如何检查包含字符的文件是否是二进制文件?

3 个答案:

答案 0 :(得分:4)

这与你如何解释文件中的内容有关。文件中的所有内容都是二进制文件,字符是整数等。

当您在控制台上对文件(或CAT或您拥有的任何操作系统)执行TYPE时,默认情况下该文件的内容将被解释为文本,因为TYPE的程序员决定这样写它。

当你编写一个程序来从文件中读出数据时,你需要决定如何解释你读到的数据。

这就是为什么你只能猜测文件内容,这就是为什么通常使用文件的扩展来提示如何解释内容。

答案 1 :(得分:1)

我认为您真正要问的是您(个人)是否可以解释文件中的内容。

正如安德斯所提到的,你通常可以将文件作为文本阅读而不管其中包含的内容 - 然而,这些字符可能毫无意义。

假设您正在编写软件来执行此任务,可能以下(高级)算法将有所帮助:

  1. 创建一个您认为可接受为文字的字符列表
  2. 读取文件,将其解释为ASCII
  3. 如果文件中的任何字符不在您的列表中,则会失败。
  4. 对要处理的任何文本编码重复步骤2和3(ASCII,UTF-x等)
  5. 如果没有通过,则不是文字。
  6. 这有帮助吗?

答案 2 :(得分:1)

好的,我相信我可以回答你的问题。数字在记事本中显示为垃圾的原因是因为您保存了一个整数值 - 保存ascii代码0-9,其中包含与之关联的时髦字符。保存字符时,它将保存该字符的实际ascii值(它将字符视为转换为其ascii值的数字),然后将其显示为您希望看到的字符。

另一种说法是:

int(1) = 1 

,而

int('A') = 65

了解它们与编译器的区别?