跳到内容

文件大小单位换算表

B / KB / KiB / MB / MiB / GB / GiB 换算速查表,可用于编写程序、核对配置值与设计测试。

SI(十进制)vs IEC(二进制)— 每级单位差距扩大 KB / KiB KB = 1,000 B KiB = 1,024 B (+2.4%) MB / MiB MB = 1,000,000 B MiB = 1,048,576 B (+4.9%) GB / GiB GB = 10^9 B GiB = 2^30 B (+7.4%) 操作系统经常将 GiB 显示为 "GB"
图:10^3 与 2^10 的差距随单位扩大

SI 单位(十进制)与 IEC 单位(二进制)的区别

文件大小有两套单位体系:基于国际单位制(SI)的十进制单位,以及 IEC 制定的二进制单位。混淆 MB 与 MiB 是边界值测试失败的常见原因。

SI 单位读法字节数 IEC 单位读法字节数 差异
KB千字节1,000 KiBKibibyte1,024 +2.4%
MB兆字节1,000,000 MiBMebibyte1,048,576 +4.86%
GB吉字节1,000,000,000 GiBGibibyte1,073,741,824 +7.37%
TB太字节1,000,000,000,000 TiBTebibyte1,099,511,627,776 +9.95%

MB → 字节换算表

MB(十进制)字节数MiB(二进制)字节数
0.1 MB100,000 B0.1 MiB104,858 B
0.5 MB500,000 B0.5 MiB524,288 B
1 MB1,000,000 B1 MiB1,048,576 B
2 MB2,000,000 B2 MiB2,097,152 B
5 MB5,000,000 B5 MiB5,242,880 B
10 MB10,000,000 B10 MiB10,485,760 B
20 MB20,000,000 B20 MiB20,971,520 B
25 MB25,000,000 B25 MiB26,214,400 B
50 MB50,000,000 B50 MiB52,428,800 B
100 MB100,000,000 B100 MiB104,857,600 B
256 MB256,000,000 B256 MiB268,435,456 B
512 MB512,000,000 B512 MiB536,870,912 B
1 GB1,000,000,000 B1 GiB1,073,741,824 B

主要服务与工具对单位的解释

服务 / 配置单位写法实际解释示例
PHP(php.ini)MMiB(二进制)10M = 10,485,760 B
Nginx(client_max_body_size)mMiB(二进制)10m = 10,485,760 B
Apache(LimitRequestBody)以字节指定字节(原值)10485760 = 10 MiB
Windows 资源管理器显示为 MB按 MiB(二进制)计算「9.99 MB」= 10,476,544 B
macOS Finder显示为 MBMB(十进制)「10 MB」= 10,000,000 B
Linux(ls -lh)MMiB(二进制)10M = 10 MiB
Gmail 附件上限25 MBMB(十进制)25,000,000 B
AWS S3 控制台显示为 MiBMiB(二进制)与显示一致

计算公式

// JavaScript 中的换算函数
const UNITS = {
    // SI(10進数)
    KB: 1_000,
    MB: 1_000_000,
    GB: 1_000_000_000,
    TB: 1_000_000_000_000,
    // IEC(2進数)
    KiB: 1_024,
    MiB: 1_048_576,
    GiB: 1_073_741_824,
    TiB: 1_099_511_627_776,
};

const toBytes = (value, unit) => value * UNITS[unit];
const fromBytes = (bytes, unit) => bytes / UNITS[unit];

// 示例:把 10 MiB 换算为字节
console.log(toBytes(10, 'MiB')); // → 10485760

// 示例:把 10000000 字节换算为 MB
console.log(fromBytes(10_000_000, 'MB')); // → 10
console.log(fromBytes(10_000_000, 'MiB').toFixed(2)); // → 9.54
 1_000, 'MB' => 1_000_000, 'GB' => 1_000_000_000,
        'KiB' => 1_024, 'MiB' => 1_048_576, 'GiB' => 1_073_741_824,
    ];
    return (int)($value * ($units[$unit] ?? 1));
}

echo toBytes(10, 'MiB');  // → 10485760
echo toBytes(25, 'MB');   // → 25000000

与边界值测试文件的对应

DevLab 提供了与常见上传上限对应的边界值测试文件。请根据目标系统对单位的解释选择合适的文件。

❓ 常见问题

1GB 是 1000MB 还是 1024MB?
作为 SI 前缀,GB 指 1000MB。1024MB 对应的是 GiB(吉比字节),属于二进制前缀。存储厂商按 SI 标注容量,而 Windows 把 GiB 的数值标成 GB,因此 500GB 的硬盘显示为 465GB。差距约 7%,到 TB 量级还会更大。
设置上传上限时该按哪种单位计算?
以你所配置的软件的解释为准。PHP 的 upload_max_filesize 与 nginx 的 client_max_body_size 都把 M 视为 1024×1024,实际上就是 MiB。而告诉用户「最大 10MB」时,对方理解的是 10,000,000 字节。用正好卡在边界的文件实测,让文案与实现保持一致。
网络速度的 Mbps 与文件大小的 MB 有什么区别?
小写 b 是比特,大写 B 是字节,1 字节等于 8 比特。100Mbps 的线路理论上每秒可传约 12.5MB,实际因协议开销会低约一成。因此 100MB 的文件理想值约 8 秒,现实中大致 9〜10 秒。