使用方法
- 「数值」默认填 8,允许 0 到 1000000000000,支持小数;「源单位」默认 GiB,「目标单位」默认 MiB。改任意一项立刻重算,光标停在数值框里按回车同样触发一次换算。
- 「源单位」与「目标单位」各有十个选项:bit、B、kB、KiB、MB、MiB、GB、GiB、TB、TiB。带 i 的是 IEC 二进制前缀(1024 进位),不带 i 的是 SI 十进制前缀(1000 进位),选之前先确定你要的是哪一套。
- 「小数位」默认 6,范围 0 到 10。它只影响显示,把结果四舍五入到指定位数;内部换算全程用双精度浮点数,不因为显示位数少而降精度。
- 「批量换算」默认已经写好五行示例,每行一条「数值 + 空格 + 单位」。按 Ctrl+Enter(Mac 上 Cmd+Enter)一次算完;万一被清空,点换算时会自动填回这五行。
- 结果区给出「原值 源单位 = 结果 目标单位」这一行,下面跟着同一数值展开到十种单位的清单,用来核对数量级有没有看错一位。
- 清单下面是一张 16 行的倍率表,把当前数值乘以 0.25 到 8192 逐个换算,默认显示 6 行,点「加载更多」展开全部,点「导出 CSV」存成带字节序标记的表格文件。
- 「交换单位」把源与目标对调,用来反着核一遍;「复制结果」复制整段结论;「复制对照表」复制正文那张 12 行的 GiB 到 MiB 对照表。
- 数值为负、超过上限、不是数字,或批量行写成「8G」「8 G」这类识别不了的形式,都会给出针对该条的具体提示,不会拿上一次的结果冒充本次输出。
这个 GiB 转 MiB 换算工具能解决什么问题
标称 1 TB 的硬盘插上电脑,Windows 里显示 931 GB,凭空少掉 92.68 GiB。这不是坏了也不是虚标,而是厂商按 SI 十进制前缀写 1 TB = 10^12 字节、操作系统按 IEC 二进制前缀读成 2^30 一档造成的。同一个字节串,两套前缀读出两个数字,本页把两套放在同一个换算器里,让你自己看清差在哪一级。
第二类是技术文档与接口参数对不上。容器编排里的资源配额写 1Gi 是 2^30 字节,写 1G 是 10^9 字节,差 7.3742%,一个字母的差别就是百分之七的内存;内存条行业沿用 JEDEC 口径把 1 KB 当 1024 字节,硬盘行业用 SI 的 1000,两者天生两套口径。换算器把十种单位并列,先把口径摆清楚再算数。
第三类是容量规划与对账。备份窗口、镜像体积、日志切分阈值,常常一个用 GiB 一个用 GB,估算时按 1 GiB ≈ 1.073742 GB 折算,预算与配额才对得上;反过来核对网络传输时长时,把 1 GiB 展开成 8589934592 bit 比用 MiB 直观得多。
第四类是检验别人的数字。同一份数据,用 SI 读出来的数值恒比用 IEC 读出来的大 7.3742%,这个比例在 2^30 对 10^9、2^40 对 10^12 每一级上都成立。看到某个换算结果偏离这个比例,就能判断对方把两套前缀混用了。
这个工具在本站也叫「GiB转MiB」,名字里的 GiB 是二进制前缀,和 GB 不是一回事,下面会讲清两者的差别。
计算原理与变量说明
本页的换算只有一步:先把输入值折成字节,再从字节折到目标单位。为此给每个单位配一个「相当于多少字节」的因子,记作 F:bit 是 1/8、B 是 1、kB 是 10^3、MB 是 10^6、GB 是 10^9、TB 是 10^12、KiB 是 1024、MiB 是 1048576、GiB 是 1073741824、TiB 是 1099511627776。
第一步,把输入折成字节:字节数 = x × F[源单位]。输入 8 GiB,字节数 = 8 × 1073741824 = 8589934592 B。第二步,从字节折到目标单位:结果 = 字节数 ÷ F[目标单位]。接上例,8589934592 ÷ 1048576 = 8192 MiB。两步合成一行就是 结果 = x × F[源单位] ÷ F[目标单位]。
变量只有三个:数值 x、源单位、目标单位。同族换算(GiB 到 MiB)时两个因子相除正好是 1024,所以 1 GiB = 1024 MiB 是整除,不会出现小数尾巴;跨族换算(GB 到 GiB)才会出现除不尽的数。
为什么缩水率一级级放大。kB 级 2.3438%、MB 级 4.6326%、GB 级 6.8677%、TB 级 9.0505%。不是每级的差变大了,而是 1024/1000 这个比值被逐级累乘:kB 是 1.024 的 1 次幂,MB 是 2 次幂,GB 是 3 次幂,TB 是 4 次幂;1.024 的 4 次幂等于 1.099511627776,取倒数再折成百分比就是 9.0505%。
为什么标称 1 TB 显示 931 GB。厂商的 1 TB 是 10^12 字节,系统用二进制前缀读它:10^12 ÷ 2^30 = 931.3226 GiB,与 1 TiB(1024 GiB)相比少 92.6774 GiB。缺的这部分在每一级都能复现,既不是坏道也不是虚标,纯粹是同一串字节被两套前缀各读一遍。
IEC 60027-2 与 JEDEC 的分歧。IEC 60027-2 专门造了 Ki、Mi、Gi、Ti 这套二进制前缀来终结混乱,规定它们是 1024 进位;JEDEC 的内存标准把 1 KB 定义成 1024 字节,与 SI 的 1000 直接冲突。结果是内存行业与存储行业各说各话,包装文案也没有全部跟上,所以换算前必须确认单位里有没有那个 i。
bit 与 B 不要混。bit 的因子是 1/8 而不是 1,1 GiB 展开到 bit 是 8589934592 bit。带宽通常用 bit/s、容量通常用 B,同一段链路的两个数字差 8 倍,写文档时 b 与 B 的大小写不能互换。
完整示例(数值仅作演示)
默认示例是 8 GiB 换成 MiB。字节数 = 8 × 1073741824 = 8589934592 B,结果 = 8589934592 ÷ 1048576 = 8192 MiB。
把数值改成 1:1 GiB = 1024 MiB。同一个 1 GiB 展开到十种单位是 8589934592 bit、1073741824 B、1073741.824 kB、1048576 KiB、1073.741824 MB、1.073742 GB、0.001074 TB、0.000977 TiB。
把源单位改成 TB、目标单位改成 GiB、数值保持 1:得到 931.3226 GiB,这就是标称 1 TB 的硬盘在系统里的显示值;目标单位再改成 TiB,得到 0.909495 TiB,缩水 9.0505%。
反过来核:源单位 GB、目标单位 GiB、数值 1,得到 0.931323 GiB,缩水 6.8677%。同一套算法在 kB 级给 0.976563 KiB(缩水 2.3438%),在 MB 级给 0.953674 MiB(缩水 4.6326%),四个数字正好对应 1.024 的 1 到 4 次幂,可以拿它们交叉验证。
批量框默认五行,目标单位 MiB:8 GiB 得 8192 MiB;1 TB 得 953674.316406 MiB;931.3226 GiB 得 953674.3424 MiB;0.931323 GB 得 888.178825 MiB;500 MiB 得 500 MiB。最后一行源与目标同单位,结果等于原值,可以拿来验算舍入有没有把数字改坏。
GiB 与 MiB 对照表
下表把 GiB 换成 MiB,全部是 1024 进位的整除结果,小数位固定两位。
| GiB | MiB | GiB | MiB |
|---|---|---|---|
| 0.5 | 512.00 | 32 | 32768.00 |
| 1 | 1024.00 | 64 | 65536.00 |
| 2 | 2048.00 | 128 | 131072.00 |
| 4 | 4096.00 | 256 | 262144.00 |
| 8 | 8192.00 | 512 | 524288.00 |
| 16 | 16384.00 | 1024 | 1048576.00 |
同一串字节,用两套前缀各读一遍,SI 数值恒比 IEC 数值大 7.3742%。下面这张表把 2 的 10 次幂一路排到 2 的 80 次幂,左边是 IEC 读法,右边是 SI 读法。
| 字节数 | GiB(IEC) | GB(SI) | SI 比 IEC 大 |
|---|---|---|---|
| 2^10 B | 0.000001 | 0.000001 | 7.3742% |
| 2^20 B | 0.000977 | 0.001049 | 7.3742% |
| 2^30 B | 1.000000 | 1.073742 | 7.3742% |
| 2^40 B | 1024.000000 | 1099.511628 | 7.3742% |
| 2^50 B | 1048576.000000 | 1125899.906843 | 7.3742% |
| 2^60 B | 1073741824.000000 | 1152921504.606847 | 7.3742% |
| 2^70 B | 1099511627776.000000 | 1180591620717.411377 | 7.3742% |
| 2^80 B | 1125899906842624.000000 | 1208925819614629.250000 | 7.3742% |
读第一张表看整除:每一行的 MiB 都是 GiB 的 1024 倍,1024 GiB 正好是 1048576 MiB,也就是 1 TiB。读第二张表看比例:不管走到哪一级,右侧除以左侧恒等于 1.073742,这个常数就是 2^30 ÷ 10^9。
结果边界、舍入与适用说明
- 数值框为空时提示「数值不能为空,请填 0 到 1000000000000 之间的数字」,不会拿上一次的结果冒充本次输出。
- 数值里带了单位符号或千分位逗号时提示该串不是有效数字,请只填数字;千分位逗号要去掉再填。
- 数值为负数时提示容量没有负值,请填 0 或更大的数,不返回负数也不取绝对值。
- 数值超过 1000000000000 时提示超出上限,请改小或换成更大的单位(比如把 kB 换成 GB 再填)。
- 批量行缺少单位、数值不是数字、或单位不在十种之内时,分别给出行号与具体原因,例如「批量第 2 行「8G」无法解析(单位「G」不在十种单位内)」。
- 小数位只影响显示,按四舍五入取到指定位数;末尾的零会被去掉,8192.000000 显示成 8192。
- 绝对值小于 1e-9 或大于等于 1e16 的结果改用科学计数法显示,避免一长串零把表格撑破。
- 页面不联网、不写本地存储,数值与批量内容只用于本次计算。
常见问题
标称 1 TB 的硬盘为什么在系统里只显示 931 GB?
厂商按 SI 十进制前缀标 1 TB = 10^12 字节,系统按 IEC 二进制前缀读成 2^30 一档:10^12 ÷ 2^30 = 931.3226 GiB,与 1 TiB 相比少 92.6774 GiB。缺的部分既不是坏道也不是虚标,是同一串字节被两套前缀各读一遍的结果。
GiB 和 GB 差多少?能不能直接用 1.07 去乘?
粗略估算可以,精确对账不行。1 GiB = 1.073741824 GB,反过来 1 GB = 0.931323 GiB。用 1.07 去乘,1 GiB 会算成 1.07 GB,少了 0.003741824 GB;单看一次无所谓,乘到 TB 级就是几 GiB 的偏差。
为什么 kB 只缩水 2.34%,TB 却缩水 9.05%?
因为 1024/1000 这个比值被逐级累乘。kB 是 1.024 的 1 次幂,MB 是 2 次幂,GB 是 3 次幂,TB 是 4 次幂;1.024 的 4 次幂是 1.099511627776,倒过来算就是 9.0505%。所以级别越高,标称值与二进制读法的缺口越大。
KiB 和 KB 是一个东西吗?内存条上的 1 KB 是 1024 还是 1000?
不是一个东西。KiB 是 IEC 60027-2 的二进制前缀,恒等于 1024 字节;KB 在 SI 里是 1000 字节,但 JEDEC 的内存标准把 1 KB 定义成 1024 字节,与 SI 冲突。内存行业沿用 JEDEC,所以内存条上的 KB 通常指 1024;硬盘用 SI,指 1000。
1 GiB 到底等于多少 bit?为什么我算出来差 8 倍?
1 GiB = 1073741824 B = 8589934592 bit,换算因子是 8 而不是 1。差 8 倍通常是因为把 bit 当成 B:带宽标 bit/s、容量标 B,两者差 8 倍。写文档时注意 b 与 B 的大小写。
批量框里写「8G」为什么报错,写成「8 GB」就行?
单位必须逐字匹配十种之一:bit、B、kB、KiB、MB、MiB、GB、GiB、TB、TiB,大小写敏感。「8G」既不是 GB 也不是 GiB,无法判断你要的是 1000 进位还是 1024 进位,所以直接报行号与原因,不猜。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。