Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何创建文件格式?_File_Programming Languages_Creation_Formats - Fatal编程技术网

File 如何创建文件格式?

File 如何创建文件格式?,file,programming-languages,creation,formats,File,Programming Languages,Creation,Formats,我一直在读一些关于文件格式的书,我对它们很感兴趣。我想知道创建格式的过程是什么。例如,.jpeg、.gif或音频格式。您会使用哪种编程语言(如果您使用的是编程语言) 该网站警告我,这个问题可能会被关闭,但这只是我追求知识的一个风险。:) 创建格式的过程是什么。例如,.jpeg、.gif或音频格式 第一步。决定文件中将包含哪些数据 第二步。设计如何在文件中表示该数据 第三步。把它写下来,让别人能理解 就这样。文件格式只是一个想法。正确地说,这是一个“协议”。没别的了。 每个人都同意将给定的信息以给

我一直在读一些关于文件格式的书,我对它们很感兴趣。我想知道创建格式的过程是什么。例如,.jpeg、.gif或音频格式。您会使用哪种编程语言(如果您使用的是编程语言)

该网站警告我,这个问题可能会被关闭,但这只是我追求知识的一个风险。:)

创建格式的过程是什么。例如,.jpeg、.gif或音频格式

第一步。决定文件中将包含哪些数据

第二步。设计如何在文件中表示该数据

第三步。把它写下来,让别人能理解

就这样。文件格式只是一个想法。正确地说,这是一个“协议”。没别的了。
每个人都同意将给定的信息以给定的格式保存

您会使用哪种编程语言(如果您使用的是编程语言)

所有可以进行I/O的编程语言都可以有文件格式。有些人对可以处理的文件格式有限制。有些语言处理低级字节的能力不如其他语言

但“格式”不是“实现”


格式是一个概念。实现是一种实现。

您不需要编程语言来编写文件格式规范,尽管文字处理器可能是一种方便的工具

基本上,您需要决定如何将文件信息存储为位序列。这可能微不足道,也可能非常困难。举个简单的例子,一个非常原始的位图图像格式可以从一个表示位图宽度的无符号32位整数开始,然后再从一个表示位图高度的整数开始。然后,您可以决定简单地按顺序写出像素的颜色,从左到右,从上到下(像素的第1行,像素的第2行,…),每像素使用24位,格式为红色8位,绿色8位,蓝色8位。例如,由交替的蓝色和红色像素组成的8×8位图将存储为

00000008000000080000FFFF00000000FFFF0000...
在一个不那么简单的例子中,它实际上取决于您希望保存的数据。通常,您会定义大量记录/结构,例如,并指定它们的顺序、嵌套方式,并且可能需要编写大量标记和查找表。我自己写过很多文件格式,最近一次是用于保存结构的ASD(AlgoSim数据)文件格式。这些文件由许多记录(可能是嵌套的)、查找表、魔术字(表示结构开始、结构结束等)和自定义格式的字符串组成。通常简化文件格式的一个典型情况是,记录包含有关其大小的数据,以及记录后面的自定义数据部分的大小(如果记录是某种头,则在自定义格式的数据之前,例如像素颜色或声音样本)


如果您以前没有使用过文件格式,我建议您学习一种非常简单的格式,例如Windows 3位图格式,并编写自己的BMP编码器/解码器,即创建和读取BMP文件(从头开始)并显示读取的BMP文件的程序。现在您可以了解基本思想了。

从根本上说,文件的存在只是为了存储将来需要重新加载的信息,这些信息可以由同一个程序加载,也可以由不同的程序加载。设计了一种非常好的文件格式,以便:

  • 任何编程语言都可以用来读或写它
  • 程序最可能需要的文件信息可以快速高效地访问
  • 该格式可以在将来扩展,而不会破坏向后兼容性
  • 格式应适应文件使用域中存在的任何特殊要求(例如,错误恢复能力、压缩、编码等)

  • 你肯定对调查和调查很感兴趣。这些工具为设计前后兼容的文件格式提供了一种现代的、有原则的方法。

    您是指二进制格式,还是任何一般格式(包括纯文本)?现有答案是正确的,但是如果您想创建概念证明或库来实现文件格式的解析器,那么我建议您使用C/C++。大多数语言都可以使用,但这些都是常用的。很好的解释。我喜欢“协议”这个词,非常合适。我不会那么做。但OP的里程可能会有所不同。