表格 1 GPT主分区头数据格式
字节偏移 | 长度 | 内容 | 0 | 8字节 | 签名("EFI PART", 45 46 49 20 50 41 52 54) | 8 | 4字节 | 修订版本号(在1.0版中,值是 00 00 01 00) | 12 | 4字节 | 分区头的大小(单位是字节,通常是92字节,即 5C 00 00 00) | 16 | 4字节 | 分区头(第0-91字节)的CRC32校验,计算前需先将此内容写0 | 20 | 4字节 | 保留,必须是 0 | 24 | 8字节 | 当前LBA(这个分区表头的位置) | 32 | 8字节 | 备份LBA(另一个分区表头的位置) | 40 | 8字节 | 第一个可用于分区的LBA(主分区表的最后一个LBA + 1) | 48 | 8字节 | 最后一个可用于分区的LBA(备份分区表的第一个LBA − 1) | 56 | 16字节 | 硬盘GUID(在类UNIX系统中也叫UUID) | 72 | 8字节 | 分区表项的起始LBA(在主分区表中是2) | 80 | 4字节 | 分区表项的数量 | 84 | 4字节 | 一个分区表项的大小(通常是128) | 88 | 4字节 | CRC32 of partition array | 92 | * | 保留,剩余的字节必须是0(对于512B/LBA的硬盘就是420个字节) |
请教上面的“分区头(第0-91字节)的CRC32校验,计算前需先将此内容写0”,这里的CRC32是怎么计算的?拿16进制字符串计算,还是拿什么计算?有没有高手研究过的?
|