13

我对文件、文件编码和文件格式的概念缺乏清晰的理解。谷歌在一定程度上提供了帮助。 我目前了解,所有文件都是二进制文件,即这样一个文件中的每个字节都可以包含 256 个可能的位字符串中的任何一个。ASCII 文件(这是我们进入编码部分的地方)是二进制文件的子集,其中每个字节仅使用 7 位。

这就是事情变得混乱的地方。文件格式似乎是一种解释文件中字节的方法,而文件扩展名似乎是识别文件格式的最常用方法之一。

这是否意味着有为二进制文件定义的格式和为 ASCII 文件定义的格式?xml、pdf、doc、rtf、html、xls、sql、tex、java、cs 等格式是否“引用”ASCII 文件?而像 jpg、mp3、avi、eps、obj、out、dll 这样的格式是我们在谈论二进制文件的线索?

4

4 回答 4

12

我认为您不能谈论ASCIIBINARY文件,而是TEXTBINARY文件。

从这个意义上说,这些是文本文件:XML、HTML、RTF、SQL、TEXT、JAVA、CSS、EPS。

这些是二进制文件:PDF、DOC、XLS、JPG、MP3、AVI、OBJ、DLL。

ASCII 只是在计算开始时用来表示文本的字符表,但现在它有点不受欢迎,因为它不能用中文、阿拉伯语、西班牙语(带有ñ、Ñ、波浪线的单词)、法语等语言表示文本和别的。现在鼓励使用其他字符表示而不是 ASCII。最著名的可能是UTF-8。但是还有其他的,例如ISO-8859-1ISO-8859-3等。看看Joel Spolsky 的这篇关于 UNICODE 的文章这很有启发性。

文件格式只是另一个非常不同的问题。文件格式是程序同意的协议,用于表示信息。从这个意义上说,JPG文件是具有某种(众所周知的)内部格式的图像,允许程序(浏览器、电子表格、文字处理器)将它们用作图像。

文本文件也有格式(IE,有 XML 和 HTML 等文本文件的规范)。它的格式,如JPG和其他二进制文件,允许应用程序以连贯且特定的方式使用它们来实现某些目标:IE,呈现 WEB PAGE(HTML 和 XHTML 文件格式)。

于 2012-12-14T11:51:29.903 回答
2

文件在硬盘驱动器上的实际存储方式由操作系统定义。文件的实际内容可以描述为字节数组——每个字节都有一个字节大小的可能值。

文本文件 - 将使用 256 字符 (ASCII) 集 - 然后您可以轻松读取它们或更广泛的字符集 - 在这种情况下 - 只有合适的应用程序才能读取它。

其余的 - 您可能称之为二进制(以及“文本”查看器“无法读取”的任何其他格式) - 是旨在由某些其他应用程序或操作系统读取的格式。如果它是可执行的 - 操作系统可以读取并执行它们,其他的 - 比如 jpg - 旨在被照片查看者等“理解”......

于 2012-12-14T11:57:12.223 回答
1

这是一个老问题,但仍然非常相关。我也对此感到困惑,并要求澄清。这是摘要(希望对某人有所帮助):

格式:文件/记录格式是数据的表示方式。您可以使用 CSV、TSV、JSON、Apache Log 格式、Thrift 格式、Protobuf 格式等来表示您的数据。格式负责确保数据结构正确且正确表示。例如:当你读取一个 json 文件时,你应该有嵌套的键值对;这是始终存在的保证。

{
    "story": {
        "title": "beauty and the beast"
    }
}

编码:编码基本上将您的数据(以任何格式或纯文本)转换为特定的方案。现在,这个方案是什么?方案特定于编码的目的。例如,通过有线(互联网)传输数据时,我们希望确保上述示例 json 正确到达另一端,不应该被破坏。为了确保这一点,我们将添加一些元信息,如校验和,可用于验证数据的正确性。编码的其他用途包括缩短数据、交换秘密等。

Base64 encoding of above JSON example:

ew0KICAgICAgICAic3RvcnkiOiB7DQogICAgICAgICAgICAidGl0bGUiOiAiYmVhdXR5IGFuZCB0aGUgYmVhc3QiDQogICAgICAgIH0NCn0=
于 2015-08-03T18:31:02.663 回答
0

我认为值得注意的是,对于媒体文件,mpeg 等是媒体编解码器的一种形式。他们解释了数字数据如何表达视觉和听觉。它们通常位于媒体文件容器中,例如 avi 文件,它实际上是一种用于媒体的 riff 文件类型。

于 2015-08-15T10:50:52.220 回答