数据存储
bit/B/KB/MB/GB/TB/1000 vs 1024
二进制 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 进制(二进制) | 取决于个人知识储备,易出错 |
| 操作步骤 | 输入数值,选择单位,自动显示结果 | 需选择源单位和目标单位,点击转换 | 需记忆换算公式,分步计算 |
| 结果精度 | 支持自定义小数位,精确显示 | 通常固定小数位或四舍五入 | 取决于计算精度,易产生误差 |
使用指南
上手步骤 · 输入输出 · 避坑提示
使用步骤
- 在「数值」输入框填写数字,支持整数和小数
- 在「单位」下拉列表选择输入单位(bit/B/KB/MB/GB/TB)
- 在「目标单位」下拉列表选择要转换的单位
- 选择换算标准:1000 进制(十进制)或 1024 进制(二进制)
- 点击「转换」按钮,结果区显示换算后的数值与对应单位
输入输出示例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 = ? B | 0.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 bit1 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 表示两种进制。
原理图
开发者集成
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 TBpackage 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 个高频疑问