使用方法
第一步,在「数值」框里填要换算的数字。页面默认填 1,允许区间是 0 到 1000000000,支持任意小数位;单位不写在框里,由右边的下拉决定,填「500 MB」这种带字母的写法会被拒绝并给出提示。
第二步,在「从单位」选数据的单位,在「到单位」选想要的单位。打开页面时它们固定为「兆字节」和「KiB」,也就是兆字节转 KiB这一对;想算吉字节换 MiB、比特换字节,改两个下拉即可,不必换页面。下拉里 MB、GB、TB、PB 是十进制单位,KiB、MiB、GiB、TiB 是二进制单位,选之前先看清是哪一套口径。
第三步,点「换算」按钮,或者直接在数值框里裸按 Enter,结果区立刻刷新成「数值 原单位 = 结果 目标单位」这一行,下面那行提示也同步更新,读屏软件会朗读本次结果。
点「载入示例」把三个输入一次性还原成默认值;点「复制结果」把换算式和结果一起放进剪贴板,换算式形如「1 × 1000000 ÷ 1024」,方便逐步核对。下方对照表的「导出对照表 CSV」下载带 UTF-8 BOM 的表格,用 Excel 打开中文不会乱码;「复制对照表」按 TSV 复制,可以直接粘进任意表格软件。
改完下拉后结果会自动重算,输入过程中每敲一个字符也会刷新一次。发现结果和预期对不上时,先看红色提示区有没有报错文字,再检查两个下拉选的是不是同一套单位口径。
这个工具能解决什么问题
第一,把十进制和二进制两套存储口径接在同一条数轴上。硬盘厂商标称容量用 MB、GB,一个「兆」是一百万;操作系统和编程语境里的 KiB、MiB,一个「kibi」是 1024。同样一个 1,乘出来差出约百分之五,买硬盘的人尤其有体感。本页把这条鸿沟一次算清。
第二,掐掉「数零」这个最容易出错的环节。1000000 除以 1024 这样的算式,手算时少写一个零就会差出十倍,而且从结果本身完全看不出来错在哪。本页用统一因子表计算,out = in × f[from] ÷ f[to],无论选哪一对都不会把小数点挪错位置。
第三,一次覆盖整个数据量维度。比特、字节、千字节、兆字节、吉字节、太字节、拍字节、KiB、MiB、GiB、TiB 共 11 个单位装在同一张因子表里,任意两个都能互转,做带宽折算、存储采购、内存核对时不必为每一对单位再找一个页面。
本页不做这些事:不拆分文件系统开销、坏块保留等机械层面的容量损耗;不衡量传输快慢,只算数据量;也不涉及压缩率与编码效率。它只回答「一个数据量从某单位到另一单位是多少」。
换算原理与变量说明
核心是一张相对字节的因子表。本页以字节为基准,给每个单位一个因子 f,含义是「1 个该单位等于多少字节」:字节 f=1,千字节 f=1000,兆字节 f=1000000,吉字节 f=1000000000,太字节 f=1000000000000,拍字节 f=1000000000000000,比特 f=0.125,KiB f=1024,MiB f=1048576,GiB f=1073741824,TiB f=1099511627776。换算式统一写成 out = in × f[from] ÷ f[to]。
两套前缀必须分清。SI 十进制前缀 kilo、mega、giga 在存储领域按 1000 递进:1 kB=1000 B,1 MB=1000000 B。IEC 二进制前缀 kibi、mebi、gibi 按 1024 递进:1 KiB=1024 B,1 MiB=1048576 B,1 GiB=1073741824 B。两者相差 (1024/1000) 的 n 次方,n 是前缀级数:兆层约 4.86%,吉层约 7.37%,太层约 9.95%,层级越高差得越狠。
兆字节转 KiB 这一对因此不是整数。1 MB=1000000 B,1 KiB=1024 B,于是 1 MB=1000000÷1024=976.5625 KiB;反过来 1 KiB=1024÷1000000=0.001024 MB。两个数都恰好四位小数,是精确值不是约数,可以放心用于对账。
操作系统报告容量变小的坑就来自这里。买一块标称 1 TB 的硬盘,系统按 1024 递进读成约 931 GiB,再把 GiB 显示成 GB,看起来「少了 69 GB」,其实一个字节都没少,只是口径不同。用本页选「太字节」到「GiB」输入 1,就能看到 0.9094947018 这个比例。
比特和字节是 8 倍关系,别和 1024 混淆。1 字节=8 比特,所以 1 MB=8000000 比特。这里的 8 来自字节定义本身,与二进制前缀的递进率互不相干,三套数字各走各的口径。
完整示例(默认输入实测)
示例条件与页面默认值完全一致:数值 1、从「兆字节」到「KiB」。逐项核对——取因子 f[mb] = 1000000、f[kib] = 1024;代入 out = 1 × 1000000 ÷ 1024,得 976.5625;结果区显示「1 兆字节 = 976.5625 KiB」,换算式行同步给出「1 × 1000000 ÷ 1024」。
换几个数值验证线性关系,结果严格跟着输入走:
- 输入 500:500 × 1000000 ÷ 1024 = 488281.25 KiB,是默认结果的整五百倍;
- 输入 2:2 × 1000000 ÷ 1024 = 1953.125 KiB,默认结果的两倍;
- 反过来输入 1 KiB 转兆字节:1 × 1024 ÷ 1000000 = 0.001024 MB,正是对照表最后一行。
再换一对单位交叉验证:从兆字节到吉字节,f[gb] = 1000000000,out = 1 × 1000000 ÷ 1000000000 = 0.001,正好落在「1000 MB = 1 GB」这条十进制定义上;到 MiB 则是 0.9536743164,与 976.5625÷1024 同源。三处数字彼此闭环,说明因子表内部没有矛盾。
对照表
下表以「1 个原单位」为基准给出换算结果,共 11 行,全部直接显示。前 10 行是 1 兆字节分别等于多少字节、千字节、吉字节、太字节、拍字节、KiB、MiB、GiB、TiB、比特;最后一行是反查用的 1 KiB = 0.001024 兆字节。数值全部由上面的因子表推导,和计算器算出的结果同源。
把这张表当成速查手册:想知道一块标称 500 GB 的硬盘按 GiB 读是多少,就把「吉字节到 GiB」一行乘 500;想核对下载软件里的 976.5625 KiB/s 相当于多少 MB/s,直接用「兆字节到 KiB」那一行做除法。表里没有列出的组合,用上方计算器任选两个单位同样算得出来。
需要提醒:对照表描述的是单位与单位之间的固定比例,与你上方填的具体数值无关;你自己的实算结果请以上方结果区为准。
结果边界与舍入
- 输入范围。「数值」允许 0~1000000000。空值、非数字、负数、超出上限这四种情况都会弹出具体的中文提示,写明出问题的字段和允许区间,不会静默当成 0 处理。
- 两个单位相同。若「从单位」和「到单位」选了同一个,结果恒等于输入值。页面照常算出结果,同时在提示行写明「源单位与目标单位相同,结果恒等于输入值,请改选目标单位」。
- 大数与极小数的显示。结果小于 1e-12 或大于等于 1e15 时改用六位小数的科学计数法。所以 1 拍字节转 KiB 这类大数会写成科学计数法的缩写形式,对照表里给出的则是十位有效数字的完整值。
- 中间量级的处理。绝对值大于等于 1 时按 10 位有效数字取位再去掉多余的零;绝对值小于 1 时先取 15 位小数再去掉尾部零。这样 976.5625 不会被写成 976.5625000,0.001024 也不会平白多出小数。
- 浮点误差的量级。1000000 与 1024 在双精度下都是精确可表示的值,本例不存在表示误差;跨到吉字节、太字节层级时,1e15 以上的乘积会进入近似区,误差仍远小于显示位数,比例关系可靠。
- 全程本地。换算只在当前浏览器里做,不发起网络请求,不写 Cookie 和 localStorage,关掉页面什么都不剩。
常见问题
1 兆字节为什么等于 976.5625 KiB 而不是 1000 KiB?
因为兆字节走十进制,1 MB=1000000 字节;KiB 走二进制,1 KiB=1024 字节。1000000÷1024=976.5625,所以 1 MB 按 KiB 量反而略少,这正是两套口径最直观的差别。
MB 和 MiB 到底该用哪个?
看场景。存储厂商标称、网络传输、SI 体系里用 MB;操作系统报告、内存寻址、编程语境里常用 MiB。两者相差约 4.86%,写文档时最好标明口径,本页两个都支持,下拉里分开列出。
为什么 1 TB 硬盘在电脑里显示只有 931 GB 左右?
硬盘厂按 1000 递进标 1 TB=1000000000000 字节,系统按 1024 递进读成约 931.32 GiB,再把 GiB 显示成 GB,于是「少了」约 69 GB。字节数一个没少,选本页「太字节」到「GiB」输入 1 即可复现这个比例。
比特和字节差多少,为什么不是 1024 倍?
1 字节=8 比特,这是字节的定义,所以 1 MB=8000000 比特。1024 是二进制前缀的递进率,管的是「千」与「kibi」的区别,两件事互不相干,别混为一谈。
结果区为什么有时候写科学计数法?
当结果小于 1e-12 或大于等于 1e15 时,页面改用六位小数科学计数法,避免排出一长串零。比如 1 拍字节转 KiB 这类大数就会缩写显示,对照表里保留的是十位有效数字的完整值。
数值填负数或超过 10 亿会怎样?
页面会弹出具体的中文提示,说明出问题的字段和允许区间 0~1000000000,不会静默当成 0,也不会给出一个看似正常的错答案。把数值调回区间内即可正常换算。
为什么选了相同单位还出结果?
恒等换算是成立的:1 MB 换成 MB 就是 1。页面照常计算,只是额外提示源单位与目标单位相同,建议改选目标单位,避免误以为没算。
换算过程会上传我的数据吗?
不会。所有换算只在当前浏览器本地执行,页面不发起任何网络请求,也不写 Cookie 或 localStorage。打开开发者工具的 Network 面板连点几次换算,记录始终是空的。