未压缩大小是指你从压缩包中解压后文件的大小。RAR 压缩包会为其中的每个文件保存这个数值。
除了未压缩大小外,压缩包还会保存压缩大小,即文件在压缩包内部占用的空间。ZIP 压缩包也保存相同类型的数值,元数据读取程序 ExifTool 将其显示为 ZipUncompressedSize。详见ZIP 未压缩大小一文。
哪些文件携带它
未压缩大小来自 RAR 压缩包,适用于较早的 RAR 4.x 格式和较新的 RAR 5.0 格式。压缩包中的每个文件都有自己的头部,该头部中保存了文件的未打包大小。
同一个头部还会保存压缩包中的文件名以及创建该压缩包时使用的操作系统。它还可以保存修改日期。由于每个文件都有自己的头部,一个包含 10 个文件的压缩包就可以有 10 个未压缩大小数值。
ExifTool 是一个读取元数据的程序,默认只显示 1 个未压缩大小。启用其 Duplicates 选项后,会显示压缩包中每个文件的数值。
数值的来源
压缩程序在将文件添加到压缩包时,会把这个数值写入头部。在 RAR 5.0 中,头部将未打包大小存储为最长 64 位的可变长度整数。
头部中还可以存储未打包数据的 CRC32 校验和。该字段是可选的,因此文件头可能不包含它。
RAR 5.0 压缩包可以将某个文件的未打包大小标记为未知。这时,程序必须忽略已保存的数值,并持续解压直到压缩数据结束。ExifTool 不会为这样的文件显示未压缩大小。
该数值的格式
该数值是一个以字节为单位的整数,没有单位标识。程序通常会把这个数值换算成更大的单位,但使用的规则并不完全相同:
- 1 kB(kilobyte,千字节)等于 1,000 字节,1 MB(megabyte,兆字节)等于 1,000,000 字节。
- 1 KiB(kibibyte,千二进制字节)等于 1,024 字节,1 MiB(mebibyte,兆二进制字节)等于 1,048,576 字节。
有些程序使用 KB 或 MB 的写法,但实际指的是 1,024 字节或 1,048,576 字节。因此,两个程序可能会为同一个文件显示不同的大小。
它的重要性
未压缩大小可以帮助你估算在解压压缩包之前需要多少可用磁盘空间。把压缩包中所有文件的数值相加,就能得到一个大致总量。
未压缩大小不同于压缩包本身的文件大小。文件大小是整个 RAR 文件中的字节总数。
将未压缩大小与压缩大小对比,可以看出每个文件通过压缩节省了多少空间。如果这两个数值几乎相同,说明压缩包为该文件节省的空间很少。在 RAR 4.x 压缩包中,打包方式 Stored 表示文件是未压缩保存的。
这个数值只是压缩包声明的值。对体积很小却声明巨大未压缩大小的压缩包要格外小心。这可能是一个解压炸弹(也叫 zip 炸弹),在有人解压时会产生大量数据。