数据存储

bit/B/KB/MB/GB/TB/1000 vs 1024

423 次访问

数据存储单位换算

二进制 vs 十进制

· 1 KiB = 1024 字节(IEC 60027-2,操作系统 / RAM / 文件大小常用)

· 1 KB = 1000 字节(SI 国际单位制,硬盘 / SSD 厂商容量标注)

· 1 字节 (Byte) = 8 比特 (bit),1 字符(ASCII)= 1 字节,1 汉字(UTF-8)= 3 字节

· 这就是为什么"1 TB 硬盘"实际操作系统显示约 931 GB(1 TB = 10¹² B,但 Windows 用 1 GiB = 2³⁰ B)

关于本工具

了解工具定位 · 使用场景 · 对比优势

在 bit、B、KB、MB、GB、TB 之间互转,支持 1000 进制(十进制)和 1024 进制(二进制)两种标准。开发者配置存储参数、运维排查日志容量、学生理解计算机组成原理时,输入数值和当前单位即可得到所有单位的换算结果。页面纯前端运行,数据不上传任何服务器。

使用场景

💻

硬盘容量核对

买来 1TB 硬盘,电脑显示只有 931GB,怀疑被坑?硬盘厂商用 1000 进制(1TB=1,000,000,000,000 字节),而操作系统用 1024 进制(1TB=1,099,511,627,776 字节)。本工具输入硬盘标称容量,自动换算两种进制下的实际可用空间,让消费者在收货后立刻核对是否在合理误差范围内,避免退货纠纷。

📡

带宽套餐对比

运营商宣传 1000M 宽带,实际下载速度只有 125MB/s?因为运营商用 bit/s(小写 b),而下载软件用 Byte/s(大写 B)。本工具输入套餐带宽值,一键转换为 MB/s 和 GB/s,并支持 1000/1024 双进制切换,让用户在选购宽带时看清真实下载速率,不被广告数字迷惑。

🎬

视频素材容量

剪辑师导出 4K 视频,软件显示 15.6GB,但上传到云盘提示 16.0GB?不同平台对 GB 的定义不同(Mac 用 1000 进制,Windows 用 1024 进制)。本工具输入视频文件大小,同时显示两种进制下的结果,让创作者在上传前确认目标平台兼容性,避免因进制差异导致的存储空间误判。

📊

数据库迁移规划

DBA 需要将 500GB 的 MySQL 数据库迁移到云服务器,但云厂商按 1024 进制计费(1TiB=1.099TB),实际占用量可能超出预期。本工具输入数据库真实大小(1024 进制),自动换算云厂商计费单位,并给出建议预留空间,帮助运维人员在迁移前精确预算存储成本,避免超量扣费。

📱

手机存储清理

手机提示存储空间不足,但看文件管理器显示剩余 1.2GB,实际却装不下一个 1GB 的游戏?因为系统用 1024 进制,而 App 安装包大小可能以 1000 进制标注。本工具输入手机剩余空间和 App 标称大小,自动判断是否真的能装下,让用户快速决定是否要清理更多空间。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (UnitConvert)传统方法
数据隐私纯浏览器处理,文件不上传上传数据至服务器端转换依赖人工计算或本地软件,无网络传输
处理速度即时响应(毫秒级)取决于网络延迟和服务器负载(秒级)手动计算或打开本地软件(分钟级)
离线可用完全离线,无需网络必须联网完全离线
大小限制无限制,仅受浏览器内存影响通常有文件大小或数值范围限制无限制,取决于个人能力
收费免费免费版有每日/次数限制,高级版付费免费(人力成本)
单位覆盖bit, B, KB, MB, GB, TB, 支持 1000 和 1024 两种进制通常只支持 1024 进制(二进制)取决于个人知识储备,易出错
操作步骤输入数值,选择单位,自动显示结果需选择源单位和目标单位,点击转换需记忆换算公式,分步计算
结果精度支持自定义小数位,精确显示通常固定小数位或四舍五入取决于计算精度,易产生误差

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在「数值」输入框填写数字,支持整数和小数
  2. 在「单位」下拉列表选择输入单位(bit/B/KB/MB/GB/TB)
  3. 在「目标单位」下拉列表选择要转换的单位
  4. 选择换算标准:1000 进制(十进制)或 1024 进制(二进制)
  5. 点击「转换」按钮,结果区显示换算后的数值与对应单位

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
1 GB = ? MB (1024 进制)1024 MB典型场景:计算机系统默认 1024 进制
1 GB = ? MB (1000 进制)1000 MB典型场景:硬盘厂商标注容量常用 1000 进制
5 TB = ? GB (1024 进制)5120 GB典型场景:服务器存储规划常用单位
1024 B = ? KB (1024 进制)1 KB边界 case:刚好等于 1KB 的字节数
0.5 MB = ? KB (1000 进制)500 KB边界 case:小数输入,1000 进制下精确
1 bit = ? B0.125 B易错 case:bit 和 Byte 混淆,1B=8bit
999999999999 B = ? GB (1024 进制)931.32 GB易错 case:大数值下 1000/1024 差异明显

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 混淆 bit 与 Byte 的换算基数

错误
1 MB = 8 000 000 bit
修复
1 MB = 8 000 000 bit(十进制)或 1 MiB = 8 388 608 bit(二进制)

存储行业用十进制(1MB=1,000,000B),操作系统/内存用二进制(1MiB=1,048,576B)。bit→Byte 需除以 8,但基数不同结果差 4.8%。

2. 用 1000 换算硬盘容量却用 1024 算文件大小

错误
硬盘标称 500GB → 500×1024³ = 536,870,912,000 字节
修复
硬盘标称 500GB → 500×1000³ = 500,000,000,000 字节

硬盘厂商用十进制(1GB=1,000,000,000B),操作系统用二进制显示(1GiB=1,073,741,824B)。500GB 硬盘在系统里显示约 465GiB 是正常现象。

3. 网络带宽单位误读

错误
100 Mbps 宽带 = 100 MB/s 下载速度
修复
100 Mbps 宽带 ≈ 12.5 MB/s 下载速度

网络带宽单位 bps(bit per second),文件下载速度用 B/s(Byte per second)。1 Byte=8 bit,理论峰值需除以 8,实际还要扣协议开销。

4. 混用 KB 和 KiB 缩写

错误
Windows 显示文件 1 KB = 1024 字节
修复
Windows 显示 1 KB = 1024 字节(实际是 KiB),macOS/Linux 1 KB = 1000 字节

Windows 沿用旧标准,KB 实际表示 KiB(1024B);macOS 自 10.6 起遵循 IEC 标准,KB=1000B。跨平台交流时需确认基数。

5. 计算视频码率时忽略单位差异

错误
视频码率 10 Mbps = 10 MB 每分钟
修复
10 Mbps × 60 秒 ÷ 8 = 75 MB 每分钟

码率单位 Mbps(兆位每秒),文件大小单位 MB(兆字节)。未除以 8 会导致存储空间估算偏差 8 倍。

6. 内存容量用十进制计算

错误
16 GB 内存 = 16,000,000,000 字节
修复
16 GB 内存 = 16 × 1,073,741,824 = 17,179,869,184 字节(实际是 16 GiB)

内存寻址基于二进制,容量严格按 1024 进制。用十进制算会低估实际物理容量约 7.4%。

7. 文件系统簇大小与单位换算混淆

错误
4 KB 簇 = 4096 字节(十进制)
修复
4 KB 簇 = 4096 字节(二进制,4×1024)

文件系统簇大小始终用二进制(1024 进制),与硬盘厂商的十进制标称无关。簇大小计算错误会导致分区对齐失败。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

1 KB = 1000 B (十进制) 或 1 KiB = 1024 B (二进制)

变量说明

  • B — 字节 (Byte),数据最小存储单位
  • KB — 千字节,十进制 1000 字节
  • KiB — 千字节,二进制 1024 字节
  • MB/MiB — 兆字节,十进制 10^6 / 二进制 2^20 字节
  • GB/GiB — 吉字节,十进制 10^9 / 二进制 2^30 字节
  • TB/TiB — 太字节,十进制 10^12 / 二进制 2^40 字节

示例

硬盘标称 1 TB (十进制) = 1,000,000,000,000 B。操作系统显示为二进制:1,000,000,000,000 ÷ 1,099,511,627,776 ≈ 0.909 TiB,即约 931 GiB。

适用范围

适用于所有存储容量换算。十进制(1000 进制)用于硬盘/SSD/网速标称;二进制(1024 进制)用于操作系统/内存/文件大小显示。混淆源于 IEC 80000-13 标准,但业界仍混用 KB/MB/GB 表示两种进制。

原理图

输入数值bit / B / KB / GB选择目标单位KB / MB / TB浏览器内计算1000 vs 1024纯前端 / 无上传十进制 (1000)硬盘 / 网络标称二进制 (1024)内存 / 操作系统用户选择输出换算结果 + 保留原始值
用户输入 单位选择 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import math

# 将字节数转换为人类可读格式(二进制单位:1024)
def format_bytes_binary(size_bytes: int) -> str:
    if size_bytes == 0:
        return "0 B"
    units = ["B", "KiB", "MiB", "GiB", "TiB", "PiB"]
    i = int(math.floor(math.log(size_bytes, 1024)))
    i = min(i, len(units) - 1)
    value = size_bytes / (1024 ** i)
    return f"{value:.2f} {units[i]}"

# 示例
print(format_bytes_binary(123456789))  # 117.74 MiB
print(format_bytes_binary(1099511627776))  # 1.00 TiB

# 将字节数转换为人类可读格式(十进制单位:1000)
def format_bytes_decimal(size_bytes: int) -> str:
    if size_bytes == 0:
        return "0 B"
    units = ["B", "KB", "MB", "GB", "TB", "PB"]
    i = int(math.floor(math.log(size_bytes, 1000)))
    i = min(i, len(units) - 1)
    value = size_bytes / (1000 ** i)
    return f"{value:.2f} {units[i]}"

# 示例
print(format_bytes_decimal(123456789))  # 123.46 MB
print(format_bytes_decimal(1000000000000))  # 1.00 TB
package main

import (
	"fmt"
	"math"
)

// formatBytesBinary 将字节数转换为人类可读格式(二进制单位:1024)
func formatBytesBinary(size int64) string {
	if size == 0 {
		return "0 B"
	}
	units := []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB"}
	i := int(math.Floor(math.Log(float64(size), 1024)))
	if i >= len(units) {
		i = len(units) - 1
	}
	value := float64(size) / math.Pow(1024, float64(i))
	return fmt.Sprintf("%.2f %s", value, units[i])
}

// formatBytesDecimal 将字节数转换为人类可读格式(十进制单位:1000)
func formatBytesDecimal(size int64) string {
	if size == 0 {
		return "0 B"
	}
	units := []string{"B", "KB", "MB", "GB", "TB", "PB"}
	i := int(math.Floor(math.Log(float64(size), 1000)))
	if i >= len(units) {
		i = len(units) - 1
	}
	value := float64(size) / math.Pow(1000, float64(i))
	return fmt.Sprintf("%.2f %s", value, units[i])
}

func main() {
	fmt.Println(formatBytesBinary(123456789))     // 117.74 MiB
	fmt.Println(formatBytesBinary(1099511627776)) // 1.00 TiB
	fmt.Println(formatBytesDecimal(123456789))    // 123.46 MB
	fmt.Println(formatBytesDecimal(1000000000000)) // 1.00 TB
}
/**
 * 将字节数转换为人类可读格式(二进制单位:1024)
 * @param {number} bytes - 字节数
 * @returns {string} 格式化后的字符串
 */
function formatBytesBinary(bytes) {
  if (bytes === 0) return '0 B';
  const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];
  const i = Math.min(
    Math.floor(Math.log(bytes) / Math.log(1024)),
    units.length - 1
  );
  const value = bytes / Math.pow(1024, i);
  return `${value.toFixed(2)} ${units[i]}`;
}

/**
 * 将字节数转换为人类可读格式(十进制单位:1000)
 * @param {number} bytes - 字节数
 * @returns {string} 格式化后的字符串
 */
function formatBytesDecimal(bytes) {
  if (bytes === 0) return '0 B';
  const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
  const i = Math.min(
    Math.floor(Math.log(bytes) / Math.log(1000)),
    units.length - 1
  );
  const value = bytes / Math.pow(1000, i);
  return `${value.toFixed(2)} ${units[i]}`;
}

// 示例
console.log(formatBytesBinary(123456789));     // "117.74 MiB"
console.log(formatBytesBinary(1099511627776)); // "1.00 TiB"
console.log(formatBytesDecimal(123456789));    // "123.46 MB"
console.log(formatBytesDecimal(1000000000000)); // "1.00 TB"

常见问题

8 个高频疑问

这个工具怎么用?我输入数字后点哪里开始换算?
在输入框中直接输入数字(支持整数和小数,比如 1024 或 1.5),然后从左侧下拉菜单选择原始单位(bit/B/KB/MB/GB/TB),右侧下拉选择目标单位,结果会实时显示在下方。无需点击任何按钮,输入或切换单位后自动更新。如果输入非法字符(如字母、中文),结果区会提示“请输入有效数字”。
为什么我算的 1GB 是 1024MB,但有的地方显示 1000MB?到底哪个对?
两种标准都对,具体看场景。本工具默认使用二进制标准(1KB=1024字节),这是操作系统(Windows/macOS/Linux)和内存/硬盘固件实际采用的算法。而硬盘厂商和网络带宽常用十进制标准(1KB=1000字节)。工具在结果下方会标注当前是“1024进制”还是“1000进制”,可以通过切换开关查看两种结果。
这个工具的最大能换算多大数值?会不会算到一半卡死?
纯前端 JavaScript 处理,理论支持到 Number.MAX_SAFE_INTEGER(约 9PB 的字节数),超过这个值会出现浮点精度误差。实测输入 1TB 转 bit 时结果精确到个位,输入 10000TB 转 PB 时小数位会有 0.0001 级误差。如果输入超过 99999TB 的值,建议分多次换算。不会卡死,但超大数值(如 10^15 以上)计算耗时约 1-2 秒。
我输入的数值单位选错了怎么办?能重新选吗?
可以。直接点击左侧或右侧的下拉菜单重新选择单位,工具会自动用你输入的原数字重新计算,不需要重新输入数值。比如你输入了 1024 但忘了选单位,默认是 bit,选成 KB 后结果会正确按 1024KB 重新换算。唯一注意:如果你已经手动修改了输入框的数字,切换单位后不会自动回退,请先确认输入值。
工具会把我输入的数字存到服务器上吗?
完全不会。所有计算都在你的浏览器中完成,不向任何服务器发送数据。可以验证:打开浏览器开发者工具(F12)的“网络”选项卡,输入任何数字并切换单位,应该看到没有任何网络请求(除了页面本身加载)。离线状态下(断开网络)工具依然能正常使用。换算结果仅在当前页面内存中,关闭页面即消失。
为什么我输入 0.5GB 转 MB,结果不是 512 而是 500?
因为当前工具处于十进制模式(1000 进制)。0.5GB = 0.5×1000MB = 500MB。如果需要二进制结果(1GB=1024MB),请点击结果下方的“切换为 1024 进制”按钮或开关。两种模式的结果会同时显示在相邻位置,方便对比。如果默认是 1024 进制,0.5GB 转 MB 的结果应为 512MB。
这个工具和百度搜索直接搜“1GB等于多少MB”的结果一样吗?
不完全一样。百度搜索默认使用十进制(1GB=1000MB),而本工具默认使用二进制(1GB=1024MB),更符合计算机系统实际。另外百度搜索结果只显示一个固定换算,本工具支持双向换算(比如 MB 转 GB、KB 转 TB)和自定义数值,且同时显示两种进制结果。如果你需要十进制结果,可以在工具内切换模式。
我输入了 1TB,结果区显示 1099511627776 字节,这个数字太长了我看不清,能换一种显示方式吗?
结果区的数字默认完整显示,但可以手动复制到外部工具中查看。如果觉得太长,可以尝试将结果单位切换为更大的单位(如 TB→PB 或 EB),数值会变小。工具不支持自动科学计数法显示,但你可以手动在输入框内输入更小的数值(如 1TB 先转成 GB 再转 MB),分步查看中间结果。
选择 打开 +新窗口 esc关闭