使用方法
- 数值框默认填 1,允许 0 到 1000000000 之间的数,支持小数。容量语境不接受负数,填负值会被拦下并说明原因。光标停在数值框里直接按回车,或点「开始换算」,都会立刻重算。
- 源单位默认选 MiB,目标单位默认选 kB。两个下拉框都完整列出 MiB、MB、kB、B、KiB、GiB 六种单位,想反向就把源选成 kB、目标选成 MiB,公式自动倒过来,不必另开页面。
- 「交换单位」按钮一键对调源与目标,适合核对正向结果之后再回算一次。对调后结果区同步刷新,不会留着上一次的数字冒充本次输出。
- 小数位默认 6,范围 0 到 12,只影响显示,不改内部精度。kB 方向常有三位小数,MiB 反向会出现十位小数,位数不够时会把小量直接显示成 0。
- 批量框默认已经写好四行示例,每行一条「数值 空格 单位」。按 Ctrl+Enter(Mac 上是 Cmd+Enter)一次算完;万一被清空,点换算时会自动填回这四行,不会静默变成零。
- 结果区标了 role="alert",读屏软件会播报;下方完整示例区把固定样本与批量行一起按当前单位算出,对照表十二行也全部由页面脚本即时计算,没有任何写死的结果。
- 对照表默认只显示前六行,点「加载更多」展开全部;「导出 CSV」下载带字节序标记的文件,「复制对照表」把整张表按 TSV 送进剪贴板,可直接粘进表格软件。
- 小数位为空、不是整数、超出 0 到 12,数值为空或夹带单位字样、超出范围,批量行缺单位或单位不在六种之内,都会分别给出带行号的具体提示。
能解决什么问题
第一类是存储容量的口径打架。硬盘厂商标 1 TB = 10 的 12 次方字节,操作系统按 2 的 40 次方报成 931 GiB,用户以为缩水,其实是十进制前缀与二进制前缀混用。本页把 MiB 与 kB 放在同一把尺子上,先把这一级的倍差看清楚,再去理解 TB 与 TiB 的差。
第二类是日志与配额里的 kB 到底是什么。CDN 流量、上传限制、内存堆栈快照经常用 kB 报数,而程序里申请的是按 1024 递增的缓冲区。1 MiB 落地成 1048.576 kB 而不是 1024 kB,做容量告警阈值时少算这 4.8576% 就会提前或延后触发。
第三类是反向核对。报表给出 1 kB 要折回多少 MiB,答案是 0.0009536743 MiB;很多估算直接写成「约 0.001」,累积到几百万条记录时偏差不能忽略。本页两个方向走同一个公式,回算值可以直接和正向值相乘验算。
本站把这件工具登记为「MiB转千字节」,下面按这个口径把系数、边界与常见误区逐项说明。它不做文件压缩、不做编码转换,也不判断某个厂商到底用了哪套前缀,只回答这两个单位之间的数值互换。
原理和变量
本页只有一步:先把输入折成字节,再从字节折到目标单位。给每个单位配一个「相当于多少字节」的因子 F,于是 结果 = 数值 × F[源单位] ÷ F[目标单位]。六个因子分别是 MiB = 1048576、MB = 1000000、kB = 1000、B = 1、KiB = 1024、GiB = 1073741824,全部以字节为基准,所以任意两个单位互换都不用改公式,反向只要把源与目标对调。
技术内核:1.048576 这个倍差到底是谁带来的。MiB 里的 Mi 是 IEC 二进制前缀 mebi,等于 2 的 20 次方,也就是 1048576 字节;kB 里的 k 是国际单位制前缀 kilo,等于 10 的 3 次方,也就是 1000 字节。两者相除得 1048576 ÷ 1000 = 1048.576,这就是 1 MiB 等于 1048.576 kB 的来源。容易混淆的是另一个数:把 MiB 换成十进制的 MB(10 的 6 次方 = 1000000 字节)时,1048576 ÷ 1000000 = 1.048576。同一个 MiB,换成 MB 是 1.048576 倍,换成 kB 是 1048.576 倍,后者比前者整整大 1000 倍。这 1000 倍来自千(10 的 3 次方)与兆(10 的 6 次方)这两个十进制前缀之间的级差,属于「目标单位换了三档量级」,和 1024 与 1000 的进制差完全是两回事。换句话说,1.048576 衡量的是二进制与十进制在同一档位上的偏差,1048.576 则是在这个偏差之上又叠了三次十进制的前缀台阶。把两者混为一谈,就会写出「1 MiB = 1.048576 kB」这种差了千倍的答案,或者反过来把 1048.576 当成 MiB 与 MB 的比。
为什么会有两套前缀:内存按地址线组织,容量天然是 2 的幂,用 1024 当一级最顺手;硬盘与通信速率沿用国际单位制,用 1000 当一级。IEC 给二进制那套另起了 kibi、mebi、gibi 的名字并规定写 KiB、MiB、GiB,就是为了把两种口径分开。本页按这个规范命名,下拉里 MB 与 MiB 是两个独立选项,不会替你猜。
反向换算不需要第二套系数。1 kB 折回 MiB 就是 1 × 1000 ÷ 1048576 = 0.0009536743 MiB,正好是 1048.576 的倒数;正反向相乘应得 1。页面在完整示例区把这一条也列出来,方便你自己验算有没有把方向搞反。
完整示例
固定样本取 1、2.5、1000 三个 MiB 值,再加一条反向的 1 kB,全部由页面脚本按上面的公式即时计算,不写死结果。下面的结果区会随源单位、目标单位、小数位一起变化,你改动任意一项它都会重算。
读的时候留意两点。其一,1000 MiB 换成 kB 得到 1048576 kB,这个数和 MiB 的字节因子数值相同,是因为 1000 kB 恰好等于 1 MB,容易误以为系数没起作用,其实它正是 1048.576 乘以 1000 的结果。其二,反向那行 1 kB 折成 0.0009536743 MiB,小数位留得太少会被四舍五入成 0,判断是否算对要看它与正向值相乘是否回到 1。
对照表
下表固定以当前源单位为输入,取 0.5、1、2、2.5、5、10、20、50、100、256、512、1000 共十二个数值,逐行算出目标单位的结果。十二行全部由脚本用同一个公式生成,页面源码里没有一个预填的答案。
| 输入值 | 换算结果 |
|---|
默认只显示前六行,点「加载更多」展开后六行;「导出 CSV」生成带 BOM 的文件,Excel 打开中文表头不乱码;「复制对照表」按 TSV 复制,粘进表格软件自动分列。表格数据跟着源单位与目标单位变化,因此切到反向换算时,这张表自动变成反向对照表。
结果边界与舍入
- 小数位只影响显示,按四舍五入取到指定位数,末尾的零会被去掉;内部始终用双精度浮点数,不会因为显示成两位就丢失精度。
- 极小或极大的结果自动改用科学计数法,绝对值小于十亿分之一、或大于等于一千万亿时触发,避免一长串零把版面撑破。
- 数值上限 1000000000、下限 0。容量语境不接受负数;超出范围会明确提示,不会截断、不会静默归零,也不会沿用上一次的结果。
- 反向结果位数很长:1 kB = 0.0009536743 MiB,留四位会变成 0.001,留两位就是 0。做回本核对时建议把小数位设到 10 以上。
- 每条非法路径都有具体文案:小数位为空、非整数、超出 0 到 12;数值为空、夹带 MiB 或 kB 字样、超出范围;批量行缺单位、单位不在六种之内、整框没有可计算的行。它们分别报出,不合并成一句。
- 页面不联网、不写 Cookie 或本地存储,所有换算只在你当前的浏览器里完成,在开发者工具的网络面板里操作几次也看不到请求。
常见问题
1 MiB 等于多少 kB,为什么不是 1024?
等于 1048.576 kB。MiB 是 1048576 字节,kB 是 1000 字节,相除得 1048.576。1024 是 KiB 与 kB 之间才会出现的数(1 KiB = 1024 B = 1.024 kB),把它套到 MiB 上就错了两级。记法很简单:带 i 的是 2 的幂,不带 i 的是 10 的幂。
MiB 和 MB 到底差在哪?
差 1.048576 倍。MiB = 2 的 20 次方 = 1048576 字节,MB = 10 的 6 次方 = 1000000 字节。两者只差 4.8576%,却让「1 MB 的文件」在按二进制报数的系统里显示成 0.9537 MiB。下拉里它们是两个独立选项,别选混。
为什么换成 MB 是 1.048576 倍,换成 kB 却是 1048.576 倍?
因为目标单位差了三档。MB 是 10 的 6 次方字节,kB 是 10 的 3 次方字节,前者是后者的 1000 倍。同一个 1048576 字节,除以 1000000 得 1.048576,除以 1000 得 1048.576。多出来的 1000 倍来自十进制前缀的级差,不是进制差。
硬盘标 1 TB,系统只显示 931 GB,是坏了吗?
没坏。厂商的 1 TB 是 10 的 12 次方字节,系统按 2 的 40 次方报数,10 的 12 次方 ÷ 2 的 40 次方约 0.9095,再叠上更细的分档就得到约 931 GiB。这是同一批字节被两套前缀描述,本页的 1048576 与 1000 正是这套差异的缩小版。
想反过来把 kB 换成 MiB,怎么操作?
两种办法:把「源单位」选成 kB、「目标单位」选成 MiB,或直接点「交换单位」让两者对调。公式不变,1 kB 会得到 0.0009536743 MiB。反向结果位数多,记得把小数位调到 10 以上再看。
小数位该留几位?
看方向。MiB 换 kB 常见三位小数,留 6 位绰绰有余;kB 换 MiB 会出现 0.0009536743 这种十位小数,建议留 10 以上。小数位只管显示,改小不会让内部算错,但可能把小量显示成 0。
批量框写「1 MiB」为什么报错,写「1 mib」就行?
批量行的单位必须逐字匹配六个键之一:mib、mb、kb、b、kib、gib,大小写敏感。「MiB」是显示用的中文名带大写,脚本只认小写键;另外单位与数值之间要有空格,缺单位也会单独报出第几行。
输入的数据会上传吗?
不会。换算、批量解析、对照表生成都在当前浏览器里完成,页面不发起任何网络请求,也不写 Cookie 或本地存储。导出 CSV 与复制 TSV 同样只在本地生成文件与剪贴板内容。