今天了解所有基本文件格式:
常见文档格式有:知TXT、DOC、XLS、PPT、DOCX、XLSX、PPTX 等
TXT格式就是纯文本格式,注意的是它的Unicode编码,还是utf8编码,还是什么别的,前面是否有dom头。
DOC格式https://blog.csdn.net/xywlzd/article/details/7958156
https://www.cnblogs.com/mayswind/archive/2013/03/17/2962205.html
常见图片格式有:JPG、PNG、PDF、TIFF、SWF等
PDF:https://www.jianshu.com/p/f48cc9077c10
https://blog.csdn.net/u012632138/article/details/81066662?utm_medium=distribute.pc_rele
GIF图象是基于颜色列表的(存储的数据是该点的颜色对应于颜色列表的索引值),最多只支持8位(256色)。GIF文件内部分成许多存储块,用来存储多幅图象或者是决定图象表现行为的控制块,用以实现动画和交互式应用。GIF文件还通过LZW压缩算法压缩图象数据来减少图象尺寸。
一个GIF文件的结构可分为文件头(File Header)、GIF数据流(GIF DataStream)和文件终结器(Trailer)三个部分。文件头包含GIF文件署名(Signature)和版本号(Version);GIF数据流由控制标识符、图象块(ImageBlock)和其他的一些扩展块组成;文件终结器只有一个值为0x3B的字符('';'')表示文件结束。
常见视频格式有:FLV、RMVB、MP4、MVB等
常见声音属格式有:WMA、MP3等
常见系统格式有:RAR、EXE、ZIP
ZIP也是二进制文件,压缩文件都是二进制文件:https://www.cnblogs.com/zs0618/p/12196781.html
是一种相当简单的分别压缩每个文件的存档格式。分别压缩文件允许不必读取另外的数据而检索独立的文件;理论上,这种格式允许对不同的文件使用不同的算法。原生并不支持Unicode文件名称,容易导致一部分的资源共享困难。
7z默认使用的是lzma压缩算法. 单个文件会先用lzma压缩算法压缩, 然后7z负责把压缩过后的文件打包. (这个跟zip类似, zip文件也是打包格式, 它默认使用deflate算法压缩.) 7z还支持封装其他几种压缩算法, 比如: Lzma2, ppmd, bzip2和deflate.
RAR格式:是一种文件压缩与归档的私有文件格式,用于数据压缩与归档打包。是将原有的文件数据经过压缩处理之后保存为RAR文件格式后缀名,是由一系列可变长度的数据块组成。另外,数据块之间并没有一定的顺序,但开发者约定,每个 RAR 文件都要以标记块和压缩文件块开始,并以结束标记块结束。
exe格式,或者说PE格式,ELF格式看这里:https://blog.csdn.net/wxh0000mm/article/details/89227911
MP3的全称是MPEG Audio Layer3,它是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.MP3的文件,基本保持原文件的音质。MP3是ISO/MPEG标准的一部分,ISO/MPEG标准描述了使用高性能感知编码方案的音频压缩,此标准一直在不断更新以满足“质高量小”的追求,现已形成MPEGLayer1、Layer2、Layer3三个音频编码解码方案。MPEGLayer3压缩率可达1:10至1:12,1M的MP3文件可播放1分钟,而1分钟CD音质的WAV文件(44100Hz,16bit,双声道,60秒)要占用10M空间,这样算来,一张650M的MP3光盘播放时间应在10小时以上,而同样容量的一张CD盘播放时间在70分钟左右。
MPEG(MovingPictureExpertsGroup)是ISO下的一个动态图 像专家组,它制定的MPEG标准广泛应用于各种多媒体中。 MPEG标准包括视频和音频标准,其中音频标准已制定出MPEG-1、MPEG-2、MPEG-2AAC和MPEG-4。
MP3音频压缩包含编码和解码两个部分。编码是将WAV文件中的数据转换成高压缩率的位流形式,解码是接受位流并将其重建到WAV文件中。
结构体
typedef struct frameHeader
{
unsigned int sync1:8; //同步信息 1
unsigned int error_protection:1; //CRC 校验
unsigned int layer:2; //层
unsigned int version:2; //版本
unsigned int sync2:3; //同步信息 2
unsigned int extension:1; //版权
unsigned int padding:1; //填充空白字
unsigned int sample_rate_index:2; //采样率索引
unsigned int bit_rate_index:4; //位率索引
unsigned int emphasis:2; //强调方式
unsigned int original:1; //原始媒体
unsigned int copyright:1; //版权标志
unsigned int mode_extension:2; //扩展模式,仅用于联合立体声
unsigned int channel_mode:2; //声道模式
}FHEADER, *pFHEADER;请注意我的同步信息分成了两个部分,而且其他的位的顺序也和上表列出的有所差别,这个
主要是因为 c 语言在存取数据时总是从低位开始,而这个帧头是需要从高位来读取的。
在帧头后边是 Side Info(姑且称之为通道信息)。对标准的立体声 MP3 文件来说其长度为 32字节。通道信息后面是 Scale factor(增益因子)信息。当解码器在读到上述信息后,就可以进行解码了。当 MP3 文件被打开后,播放器首先试图对帧进行同步,然后分别读取通道信息及增益因子等数据,再进行霍夫曼解码,至此我们已经获得解压后的数据。但这些数据仍然不能进行播放,它们还处于频域,要想听到歌曲还要将它由频域通过特定的手段转换到时域。接下来的处理分别为立体化处理;抗锯齿处理;IMDCT 变换;IDCT 变换及窗口化滑动处理。
最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准。随后MP4概念被转移到视频上,对应的是MPEG-4标准。
MP4视频文件封装格式是基于QuickTime容器格式定义的,因此参考QuickTime的格式定义对理解MP4文件格式很有帮助。MP4文件格式是一个十分开放的容器,几乎可以用来描述所有的媒体结构,MP4文件中的媒体描述与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列,甚至媒体数据可以直接引用其他文件。同时,MP4也支持流媒体。MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。
MP4文件中的所有数据都装在box(QuickTime中为atom)中,也就是说MP4文件由若干个box组成,每个box有类型和长度,可以将box理解为一个数据对象块。box中可以包含另一个box,这种box称为container box。一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(Movie Box),它是一种container box,子box包含了媒体的metadata信息;MP4文件的媒体数据包含在“mdat”类型的box(Midia Data Box)中,该类型的box也是container box,可以有多个,也可以没有(当媒体数据全部引用其他文件时),媒体数据的结构由metadata进行描述。
ISO文件没有扇区的,简单说就是一个压缩包,启动系统需三个基本文件,IO.SYS MSDOS.SYS COMMAND.COM
在CMOS中设从光盘启动,在光盘中有以上三个文件的话就可以启动
每日一个小常识:
复合文档(Compound Document)是一种不仅包含文本而且包括图形、电子表格数据、声音、视频图象以及其它信息的文档。可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息如声音和图象。目前建立复合文档的趋势是使用面向对象技术,在这里,非标准信息如图像和声音可以作为独立的、自包含式对象包含在文档中。Microsoft Windows就是使用这种技术,叫做―OLE2 storage file format 或―Microsoft Office compatible storage file format。 其实就跟着文件夹似的。
复合二进制文档(CFBF),也称复合文档,是微软开发的一种实现COM结构化存储的文件格式,用于把多个对象内容存放在一个硬盘文件里。
Microsoft已经开放了这个文件格式。广泛用于Microsoft Word与Microsoft Access。也是Advanced Authoring Format的基础。
CFBF文件头部是512字节,随后跟着是保存数据的扇区。扇区的长度在文件头部指定,通常是512字节或4096字节。
CFBF的扇区类型:
-
FAT扇区
-
MiniFAT扇区:用于Mini-Stream
-
Double-Indirect FAT (DIFAT)扇区 - 包含FAT扇区索引的链表数据
-
Directory扇区
-
Stream扇区 - 包含数据内容
CFBF文件头
CFBF头是该文件的最前的512字节。对应于C语言数据结构为:
1 |
|
FAT扇区
每个FAT条目长度4字节,包含下个FAT链表条目的扇区号,或下述特定值:
-
FREESECT (0xFFFFFFFF) - 未用扇区
-
ENDOFCHAIN (0xFFFFFFFE) - FAT链表最后一个扇区
-
FATSECT (0xFFFFFFFD) - 用于FAT数据存储
-
DIFSECT (0xFFFFFFFC) - 用于DIFAT数据存储 [1]
词汇表
-
FAT- 文件分配表,也称SAT- 扇区分配表
-
DIFAT- Double-Indirect File Allocation Table
-
FAT Chain- 一群FAT条目指出分配给一个流的那些扇区
-
Stream- 一个数据对象的内容
-
Sector- 扇区,占据512或4096个字节 [2]