存储容量换算 — 字节、KB 与 KiB 并排列出,顺便算清 1 TB 硬盘到底有多大
输入 1.5 GiB、500MB、8e3 KB 这样的容量,它给出精确字节数,并把十进制与二进制两套单位一次性列全;说明 1 TB 的硬盘为什么显示成 931 GiB,也能按 100 Mbps 这类速率算出下载要多久,再拿软盘、光盘、DVD、蓝光照比大小。输入的内容不会离开这台设备。
| 单位 | 一个单位等于 | 你的值 |
|---|
B · 传完这些数据要多久
同一个数的两个答案
同一个数,两个答案
标着 1 TB 的硬盘是 1012 字节:厂商用十进制词头,千、兆、吉就是 1000、106、109,和物理课上的读法一致。字节数不会因为谁来读它就变了,但一个程序如果拿 230 去除、又照样打印「GB」,它就会报 931。东西没少——那是 931 GiB,二进制单位;两者看着打架,只因为两种不同的除法共用了同一个名字。
所以上面把两套读法并排列出来,这本身就是答案:「这文件多大」问的其实是「多少字节」,单位是你事后选的口径。差值随容量变大:
| 标称 | 二进制口径 | 差多少 |
|---|---|---|
| 1 KB(1000 字节) | 0.977 KiB | 2% |
| 1 MB | 0.954 MiB | 5% |
| 1 GB | 0.931 GiB | 7% |
| 1 TB | 0.909 TiB | 9% |
| 1 PB | 0.888 PiB | 11% |
现实里的分工是:硬盘、固态盘按十进制卖,内存按二进制算,Linux 的 ls -lh 输出二进制,Windows 显示的是字节数却挂着十进制的标签,而网速永远是十进制比特——所以「10 Mbps 的带宽」最多搬 1.25 MB/s。bit 和 Byte 差 8 倍这一条,就能解释大多数「下载速度比宣传慢八倍」的疑问,剩下的才是损耗。
输入怎么写
一个数字、可有可无的空格、然后单位。解析器故意收得很窄:
- 只写数字 → 按字节。
2048就是 2048 字节。 - 单独一个
b→ 1 比特;单独一个B→ 1 字节。1000b等于 125 字节。 - 容量不分大小写:
mb、MB、Mb都按兆字节,kb、kB、KB都按 1000 字节。严格按 SI,Mb该是兆比特,但大家打字时两种都有,于是容量就按文件大小的常理读。 - B 前面带
i→ 二进制单位:MiB是 1048576 字节(Mib、MIB也算)。不带i就是十进制。 - 拼写出来的 bit 一律算比特:
bit、Mbit、Gbit。 - 速率是例外,那里大小写有意义,因为它是唯一的区分:
MB/s是字节、Mbps是比特、Gib/s是每秒二进制吉字节。速率不写标记(100M/s)按比特读,这正是链路带宽的写法。 - 容量框里写带“每秒”的单位会被拒绝,不会悄悄折算:那里填
100 Mbps就等于把“100 兆比特”当成容量来问,而它问的是另一类量。报错会指向 B 区。 - 科学计数和千分位都收:
8e3 KB、1,024 MB、-3.5 GiB。
传输耗时是怎么算出来的
字节数 × 8 ÷ 每秒比特数,全部算术就这一行,也正因如此它被标成「理论」。真实链路跑不满的原因,转换器不可能知道:TCP 开头几个往返在慢启动里爬窗口,TLS 握手和跳转各吃掉一个往返,Wi-Fi 协商到的速率本就撑不住,「1 Gbps 共享宽带」是真的共享,某些盘的持续写速远早于总线就见顶,移动网络还会一边限速大文件一边让测延迟的包照常通过。
第二栏统一按 70% 折算,这是稳定链路上跑满时常见的区间,只为把「1 分 49 秒」变成更接近「2 分 33 秒」的数字,顺便提醒你两栏里哪个是乐观的那个。两个数都当下限用。如果实测比它慢两倍以上,该查的是链路,不是算术。
比大小的那一行
「大约相当于 3.4 张 DVD-5」用的是介质的标称容量:1.44 MB 软盘是 1474560 字节(也就是 1440 KiB,本身就是混用口径的产物),数据光盘按 700 MiB,DVD-5 按 4.7 × 109 字节,单层蓝光按 25 × 109。空白介质要留出导入区和纠错区,实际能写的比标签少几个百分点——这些数字是拿来感受量级的,不是刻录方案。
常见问题
Q:我该写 MB 还是 MiB? 报 bug 说文件多大时,用你系统显示的那个数,并注明是哪个系统显示的。买容量用十进制。标速率用十进制。只有当这个差别会影响决策(分区表、LVM extent、分块大小)时,才值得特意写 MiB。
Q:为什么只写数字时按字节,不按 KB? 字节是唯一不含除法的单位,所以它是唯一不可能读错的一种。别的选法都会丢信息,而精确字节数就摆在第一栏。
Q:这些数字有多准? 字节数在 253(约 9 PB)以内是整数精确值,双精度能原样存下;超过之后会明说,而不是假装还准。单位表按固定位数打印,所以 1/3 GiB 显示成 0.333 GB,不给一长串浮点尾数。
Q:我输入的内容会被传走吗?
解析、除法、排版都是脚本里的算术:没有 eval,也不用服务器替你算,输入的内容不会离开这台设备。