文件大小单位换算器 (MB / MiB / GB / GiB)
即时换算 KB、KiB、MB、MiB、GB、GiB 的字节数。适用于边界值测试设计和上传限制计算。
完全免费
无需注册
浏览器内完成
5 种语言
深色模式
字节 (B)
—
KB (1,000 B)
—
KiB (1,024 B)
—
MB (1,000,000 B)
—
MiB (1,048,576 B)
—
GB (10⁹ B)
—
GiB (2³⁰ B)
—
TB (10¹² B)
—
如有问题或显示异常,请通过以下方式联系我们: 联系表单 — 我们利用反馈改进。
📖 常见的坑
在 B、KB、KiB、MB、MiB、GB、GiB 之间互相换算,并把十进制(SI)与二进制(二进制前缀)两种解释并排列出,以便你确认某个数字究竟是按哪一种写的。处理全部在浏览器内完成。但这个工具无法知道你眼前那个「500MB」指的是哪一种——光看单位写法定不下来,你必须了解写下它的那个软件的惯例。围绕容量的麻烦,多半不是算错,而是「这是哪一种 1MB」上的分歧。
| 情形 | 会发生什么 | 怎么处理 |
|---|---|---|
| 同样写作「GB」,差距可超过 7% | 1 GB 是 1,000,000,000 字节,1 GiB 是 1,073,741,824 字节,两者相差 7.4%。前缀每上升一级差距就拉大,到 TB 与 TiB 时约为 10%。问题在于,许多软件按 1024 进制计算,却把结果标为「GB」——Windows 资源管理器正是如此,会把 1 GiB 的文件显示为「1 GB」。而硬盘厂商与 macOS 使用的是十进制定义。所以「买了 500GB 的硬盘却只有 465GB」并不是虚标——只不过是把 500,000,000,000 字节按二进制单位重新数一遍,正好是 465.7 GiB 而已。 | 在规格书、需求文档、API 文档里,请写字节数而不是单位。max_upload = 10485760 无从误读,而「最大 10MB」在不同人眼里会变成 10,000,000 或 10,485,760。已有的数字属于哪一种,也有办法分辨——把它除以 1024 若干次,若能得到干净的整数就是 1024 进制(4194304 就是 4 MiB)。反之,末尾一串 0 的多半是 1000 进制。在命令行上,ls -l 与 stat 返回的原始字节数才是唯一无歧义的答案,一旦加上 -h 就引入了舍入——核对数字时请一律用原始字节数比较。 |
| 上传上限并不是「文件大小」 | 定下「最大 10MB」,并不意味着到达服务器的请求就是 10MB。multipart/form-data 会加上分界串与头部,而用 Base64 传文件的设计(比如塞进 JSON API)会膨胀 33%——10MB 的文件变成 13.3MB。更进一步,上限不在一处而在多层,最小的那个值说了算:nginx 的 client_max_body_size、PHP 的 upload_max_filesize 与 post_max_size、应用自身的校验、以及负载均衡或 CDN 的上限。麻烦之处在于每一层的症状都不一样——在 nginx 处超限会返回 413,在 PHP 处超限则会返回 200 而 $_FILES 为空,后者是最难诊断的坏法:看上去什么都没发生。 |
请把四个值放在一起、按同一套方针来定。大致原则是 client_max_body_size ≥ post_max_size ≥ upload_max_filesize ≥ 实际允许的大小,各级之间留出 20〜30% 的余量——要允许 10MB,大约就是 upload_max_filesize=10M / post_max_size=12M / client_max_body_size=16M。若要处理大文件,时间侧也要对齐:max_execution_time 与 nginx 的 fastcgi_read_timeout 只调高其中一个,仍会被较短的那个掐断。另外,上限值请以「预期最大用例 × 2」为起点,并在注释里写明为什么是这个数——没有依据的数值,后来者谁都不敢安全地改动。 |
| 磁盘上的占用量与显示大小不同 | 文件系统按块分配空间,因此哪怕只有 1 字节的文件也会占用 4 KiB(多数环境的默认块大小)。单个文件只是误差,但有一万个小文件时,本该合计 100KB 的东西正在占用 40MB——缓存目录或 node_modules 里「把大小加起来对不上」正是这个原因。反方向的偏差也存在:稀疏文件(比如内容几乎为空的巨大磁盘镜像)实际占用小于其显示大小,而文件系统若启用了压缩或去重,还会更小。换句话说,「大小」这个词指的是两个不同的量。 |
请把两个数分开测量。在 Linux / macOS 上,du -sh --apparent-size 给出的是「文件内容的合计」,du -sh 给出的是「实际占用块的合计」。这两者相差悬殊的目录,说明里面有大量小文件,而且它逼近的不只是磁盘写满,还有 inode 耗尽(用 df -i 查看——容量明明富余却写不进去时,多半就是它)。在估算备份或容器镜像时,请用「内容合计」而不是「实际占用」——传输量与归档体积与内容成正比,与块分配无关。 |
前缀取哪一种含义,取决于所处领域。有三组对应值得记住。内存永远是 1024 进制——「8GB 内存」必定是 8 GiB,因为地址线在物理上就是 2 的幂。存储的产品标称是 1000 进制。而网络带宽以比特计,并且也是 1000 进制——「1Gbps」等于 125 MB/s(从比特换算到字节要除以 8)。100Mbps 的线路只跑到 12MB/s,是正常的。另外,比特与字节的写法只靠 b 与 B 的大小写来区分——这一个字符就是 8 倍之差,所以撰写资料时请完整写出 Mbps 或 MB/s,不要省略。最后,KB 在历史上也常常指 1024,KiB 这一写法正是为了消除歧义而在 1998 年引入的——新文档请使用 KiB / MiB,读旧文档时则要对两种可能都保持怀疑。
📖 使用方法
-
1
输入数值和单位输入数值并从下拉选择单位。
-
2
查看所有单位的换算结果一次显示 B、KB、KiB、MB、MiB、GB、GiB、TB 的所有换算结果。
-
3
确认 SI(MB)与二进制(MiB)的区别1 MB = 1,000,000 B;1 MiB = 1,048,576 B。
❓ 常见问题
MB 和 MiB 的区别?
MB = 1,000,000 字节(SI);MiB = 1,048,576 字节(IEC)。
为什么 OS 显示的 GB 和规格不一样?
Windows 以 GiB 显示但标注为 GB,制造商用 SI 单位。
1 GB 有多少字节?
1 GB(SI) = 1,000,000,000 字节;1 GiB = 1,073,741,824 字节。
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。