复合文档格式(三),-,文档头header公开课(全文完整)
位置: 首页 >专题范文 > 公文范文 > 文章内容

复合文档格式(三),-,文档头header公开课(全文完整)

2022-08-10 10:50:03 投稿作者:网友投稿 点击:

下面是小编为大家整理的复合文档格式(三),-,文档头header公开课(全文完整),供大家参考。

复合文档格式(三),-,文档头header公开课(全文完整)

 

 1.复合文档头始终位于文件的开头,头 header 大小一定为 512 字节。这意味着第一个扇区(Sector, SecID 为 0)在一个文件中的偏移量始终未 512 2.复合文档头结构的内容:

 三.Byte Order

 1.包含多个字节的所有数据项可以使用 Little-Endian 或 Big-Endian method1 存储,但是在一般应用中,仅使用 Little-Endian 方式存储。

 2.Little-Endian 首先存储最低有效字节,再存储最高有效字节。这适用于所有数据类型,如 16 位整数,32 位整数和 Unicode 字符。

 3.如:

 [html] view plain copy 1. 32 位整数:13579BDFH

  2. Little-Endian:DFH 9BH 57H 13H

  3. Big-Endian:

  13H 57H 9BH DFH

  四. Of Sector File fsets

 1.使用复合文档头部的值可以从 SecID 计算文件的偏移量 [html] view plain copy 1. 1.由于每个扇区(sector)大小 size 都一样,在复合文档头部定义,如 ssz=10,则扇区大小 sec_size 为 2 的 ssz 次方,为 1024 字节

  2. 2.符合文档头部大小固定,为 512 字节

  3. 所以知道 SecID 的扇区的位置为:

  4. sec_pos(SecID) = 512 + SecID * sec_size = 512 + SecID * 2 ssz(2 的 ssz 次方)

  2.如:

 [html] view plain copy 1. 已知每个扇区(sector)大小 ssz=10,SecID=5,则:

  2. sec_pos(SecID) = 512 + SecID * 2 ssz = 512 + 5 * 210 = 512 + 5 * 1024 = 5632.五 u

  五.符合文档头说明 1.一个复合文档文件的头信息,512 字节如下:

 1. 0 - 7 的 8 个字节 1.1 前 8 个直接是复合文档文件的标识符:D0 CF 11 E0 A1 B1 1A E1 1.2 如图:

 2. 8 - 23 的 16 个字节 2.1 这 16 个字节表示此文件的唯一标识,不重要,可以全部为 0.

 2.2 如图:

 3. 24 - 25 的 2 个字节 3.1 这 2 个字节表示此文件格式的修订号,一般为 003EH 3.2 如图:

 4. 26 - 27 的 2 个字节 4.1 这 2 个字节表示此文件格式的版本号,一般为 0003H 4.2 如图:

 5. 28 - 29 的 2 个字节 5.1 这 2 个字节表示此复合文档文件采用的字节顺序(Byte Order)标识符 FEH FFH 表示 Little-Endian FFH FEH 表示 Big-Endian 5.2 如图:

 6. 30 -31 的 2 个字节

 6.1 这 2 个字节表示的是 ssz 的大小,此复合文档文件的扇区(sector)的真实大小 sec_size 为 2 的 ssz 次方字节 6.2 ssz 的最小值为 7,表示扇区最小有 128 字节,ssz 最常用值为 9,有 512 字节 6.3 如图:

 7. 32 - 33 的 2 个字节 7.1 这 2 个字节表示在 short-stream container stream 中短扇区(short-sector)的 sssz 大小,短扇区的真实大小 short_sec_size 为 2 的 sssz 次方字节 7.2 最大值是 6 中定义的扇区的大小,常用值 sssz 是 6,有 64 字节 7.3 如图:

 8. 34 - 43 的 10 个字节 8.1 这 10 个字节没有用,可忽略 8.2 如图:

 9. 44 - 47 的 4 个字节 9.1 这 4 个字节表示扇区分配表(sector allocation table

 SAT)使用的扇区(sector)数,这些扇区被 SAT 所使用

 9.2 如图:

 这里 SAT 只使用了一个扇区(sector): 00H 00H 00H 01H 10. 48 - 51 的 4 个字节 10.1 这 4 个字节表示目录流( directory stream)中第一个扇区(sector)的 SecID,目录 directory 存储了流的入口 10.2 如图:

 这里目录流从第 10 个扇区开始:00H 00H 00H 0AH

 11. 52 - 55 的 4 个字节 11.1 这 4 个字节没有用,可忽略 11.2 如图:

 12. 56 - 59 的 4 个字节 12.1

 这 4 个字节表示标准流(standard streams )的最小大小(一般为 4096 bytes), 小于此值的流即为短流

 12.2 如图:

 这里标准流的大小为 00001000 H = 4096 字节

 13. 60 - 63 的 4 个字节

 13.1 这 4 个字节表示短扇区分配表(short-sector allocation table SSAT)的第一个扇区(sector)的 SecID 13.2 如果不存在,则为-2.(详情看上一篇:http://blog.csdn.net/lipinganq/article/details/76713880)

 13.3 如图:

 这里 SSAT 从第 2 个扇区开始

  14. 64 - 67 的 4 个字节

 14.1 这 4 个字节表示短扇区分配表(Short-Sector Allocation Table

 SSAT)的扇区(sector)总数

 14.2 如图:

 这里 SSAT 使用了一个扇区(sector)

 15. 68 - 71 的 4 个字节

 15.1 这 4 个字节表示主扇区分配表(Master Sector Allocation Table

 MSAT)的第一个扇区(sector)的 SecID 15.2 如果为-2 表示此复合文档文件中没有扩展 MSAT,没有使用附加的扇区(sector)

 15.3 如图:

 这里的 SecID 为-2

 16. 72 - 75 的 4 个字节

 16.1 这 4 个字节表示主扇区分配表(master sector allocation table

 MSAT)的扇区 (sector)总数 16.2 如图:

 上一个 SecID 为-2,所以这里 MSAT 的扇区总数为 0

 17. 76 - 511 的 436 个字节

 17.1 这 436 个字节表示主扇区分配表( master sector allocation table MSAT)的一部分,包含 MSAT 的前 109 个 SecID 17.2 如图:

 由于上文例子中扇区分配表(SAT)仅使用了一个扇区(sector),所以只有第一个 SecID才有效,所以其他所有剩余的 SecID 都设置为-1,表示为特殊的 Free SecID。

 这里 SAT 仅使用的扇区为扇区 0


推荐访问:复合文档格式(三) - 文档头header公开课 公开课 复合 完整

猜你喜欢