orb*_*t82 4 programming-languages file creation formats
我一直在阅读文件格式,我对它们非常感兴趣.我想知道创建格式的过程是什么.例如,.jpeg或.gif,或音频格式.你会使用什么编程语言(如果你使用编程语言)?
该网站警告我,这个问题可能会被关闭,但这只是我追求知识的风险.:)
S.L*_*ott 26
创建格式的过程是什么.例如,.jpeg或.gif,或音频格式.
步骤1.确定文件中的数据.
步骤2.设计如何在文件中表示该数据.
第3步.记下来,以便其他人可以理解.
而已.文件格式只是一个想法.恰当地说,这是一个"协议".而已.
每个人都同意将给定的信息放在给定的格式中.
你会使用什么编程语言(如果你使用编程语言)?
所有可以执行I/O的编程语言都可以具有文件格式.有些人对他们可以处理的文件格式有限制.有些语言不能处理低级字节以及其他语言.
但"格式"不是"实现".
格式是一个概念.实施是 - 好 - 一个实现.
尽管文字处理器可能被证明是一种方便的工具,但是您不需要使用编程语言来编写文件格式的规范。
基本上,您需要确定如何将文件信息存储为一系列位。这可能是微不足道的,或者可能非常困难。举一个简单的例子,一种非常原始的位图图像格式可以从一个代表位图宽度的无符号32位整数开始,然后再一个代表位图高度的整数开始。然后,您可以决定简单地依次使用像素的颜色,从左到右和从上到下(行1像素,行2像素,...),每个像素使用24位格式为红色的8位+绿色的8位+蓝色的8位。例如,由蓝色和红色像素交替组成的8×8位图将存储为
00000008000000080000FFFF00000000FFFF0000...
Run Code Online (Sandbox Code Playgroud)
在一个不那么琐碎的示例中,它实际上取决于您要保存的数据。通常,您将定义很多记录/结构,例如BITMAPINFOHEADER,并指定它们应以什么顺序出现,如何嵌套它们,并且可能需要编写很多索引和查找表。我自己已经写了很多文件格式,最近一次是用于保存AlgoSim的ASD(AlgoSim数据)文件格式结构。这样的文件由许多记录(可能是嵌套的),查找表,魔术词(指示结构开始,结构结束等)和自定义格式的字符串组成。通常简化文件格式的一件事是,记录包含有关其大小的数据,以及记录后的自定义数据部分的大小(如果记录是某种标头,则以自定义格式开头,例如像素颜色或声音样本)。
如果您以前从未使用过文件格式,我建议您学习一种非常简单的格式(例如Windows 3位图格式),并编写自己的BMP编码器/解码器,即创建和读取BMP文件的程序(从暂存),并显示已读取的BMP文件。然后,您现在有了基本思想。
从根本上说,文件仅用于存储将来需要由同一程序或不同程序加载的信息。一个非常好的文件格式被设计为: