单位换算 · 数据存储

数据存储

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

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 106 次使用
编辑任一单位,其余实时联动换算 · 22 单位
有效数字 8 极大 / 极小值自动科学计数法 · 以「字节 B」为换算基准
存储尺度直观对比 · 当前值 1 MB 在 bit → PB 对数标尺上的位置
十进制(1000)≠ 二进制(1024):硬盘厂商按 十进制 SI 标容量 1 TB = 1000⁴ B = 10¹² B,而操作系统按 二进制 IEC1 TiB = 1024⁴ B = 2⁴⁰ B。所以买的「1 TB」硬盘,Windows 实际显示约 931 GB(真实是 931 GiB)—— 同样的字节数,被换算的「除数」不同。换算时务必看清单位是 GB 还是 GiB
网速换算 = · 1 Byte = 8 bit,故 1 MB/s = 8 Mbps

常用换算速查 quick reference · 点击填入

单位简介 about the units

就绪 · 输入任一单位数值即可全单位联动换算
第一节

关于本工具

About

硬盘标称 1TB,电脑里显示 931GB——这个差值来自厂商用 1000 进制、系统用 1024 进制。输入数字并选择单位(bit 到 TB,两种进制均可选),工具同时给出换算结果和对应的二进制/十进制数值。所有计算在浏览器内完成,不上传任何数据。

使用场景

硬盘容量对不上

新买一块标称 2TB 的移动硬盘,插上电脑只显示 1.81TB。卖家说是正常损耗,买家怀疑是二手翻新。用本工具分别按 1000 进制(2TB = 2,000,000,000,000 字节)和 1024 进制(2TiB = 2,199,023,255,552 字节)算出理论容量,再对比电脑显示的 1.81TB(其实是 1.81TiB),立刻确认是厂商用 1000 进制标容量、系统用 1024 进制显示导致的差异,省去退货扯皮。

云盘套餐选档

摄影工作室要买 5TB 云存储年套餐,但服务商按 1000 进制计费,本地素材按 1024 进制统计。本地素材总大小 4.2TiB,用本工具换算成 4.62TB,发现买 5TB 套餐刚好够用半年,而非预想的 4TB 套餐。避免了因进制差异买错档位、半年后被迫加价扩容的被动局面。

视频码率估算

B 站 UP 主上传 4K 视频,平台限制单文件 8GB。剪辑软件显示码率 50Mbps,时长 22 分钟。用本工具计算:50Mbps × 22 × 60 ÷ 8 = 8,250MB ≈ 8.06GB,超限 60MB。将码率降到 48Mbps 后重算为 7.92GB,刚好压线通过,省去反复导出测试的时间。

日志文件告警

运维收到服务器磁盘告警:/var/log 分区使用率 95%,剩余 1.2GB。日志轮转策略按 500MB 切分,当前有 24 个日志文件。用本工具算出 24 × 500MB = 12,000MB = 11.72GB,对比分区总容量 15GB,确认是日志堆积而非误报。再计算清理 7 天前的 8 个文件可释放 4GB,正好回到安全水位。

芯片规格书换算

嵌入式工程师选型 Flash 芯片,规格书写 256Mb(兆位),项目需求是 32MB(兆字节)。用本工具换算:256Mb ÷ 8 = 32MB,刚好满足。另一颗芯片标 512Mb,但数据手册写 64M×8,需要确认是 512Mbit 还是 512MByte。用工具分别按两种解释算出 64MB 和 512MB,对比引脚封装判断出是 64MB,避免因位/字节混淆烧错料。

对比矩阵

维度本工具竞品 A(在线转换站)传统方法(手动计算)
隐私数据在浏览器内处理,不上传服务器需上传文件至云端,存在隐私泄露风险完全离线,无数据外传
离线可用首次加载后断网仍可用必须联网无需网络
大小限制无文件大小上限,仅受浏览器内存限制常见限制 10-100 MB,大文件需付费无上限,受计算工具限制
单位覆盖bit / B / KB / MB / GB / TB,支持 1000 和 1024 两种进制通常只支持 1024 进制,缺少 bit 和 TB需手动查表或记公式,易出错
速度输入即出,毫秒级响应上传 + 处理 + 下载,耗时数秒至数十秒依赖计算器或笔算,数秒至数分钟
注册要求无需注册,打开即用部分功能需注册或登录无注册要求
收费完全免费基础免费,高级功能或大文件需付费免费(但需自备计算工具)
第二节

使用指南

Getting Started

使用步骤

  1. 1在数值输入框键入数字(如 2048),从左侧下拉菜单选原单位(如 KB),右侧立即显示所有目标单位结果
  2. 2点击任一结果卡片(如 2 MB),数值自动复制到剪贴板,页面顶部出现「已复制」提示
  3. 3切换「1000 进制」与「1024 进制」标签,结果列表自动按新进制重新计算并刷新
  4. 4展开底部「换算公式」区域,查看当前换算的系数(如 1 KB = 0.0009765625 MB)与计算过程

输入输出示例

输入输出说明
1024 KB → MB0.9765625 MB(1024进制) / 1.024 MB(1000进制)常规:1MB的两种定义边界,验证工具是否同时支持二进制和十进制换算
1 GB → MB1024 MB(1024进制) / 1000 MB(1000进制)常规:最常用的大单位换算,用户常混淆两种标准
0 bit → B0 B边界:零值输入,验证工具不返回空串或报错
8 bit → B1 B边界:最小整数倍换算,1字节=8位的经典场景
1 TB → GB1024 GB(1024进制) / 1000 GB(1000进制)边界:存储行业最大常用单位,硬盘厂商用1000进制,操作系统用1024进制
1.5 GB → MB1536 MB(1024进制) / 1500 MB(1000进制)易错:小数输入,用户常误以为1.5GB=1500MB(实际二进制下是1536MB)
0.5 KB → B512 B(1024进制) / 500 B(1000进制)易错:小于1单位的十进制小数,两种进制结果差异明显

常见错误对照

1.混淆 bit 与 Byte 的换算关系

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

bit 是信息最小单位,Byte 是 8 个 bit。MB 与 bit 的换算必须乘以 8,且需先明确使用 1000 还是 1024 进制,否则结果差 5%。

2.混用 1000 进制与 1024 进制单位

✗ 错误硬盘标称 500 GB,系统显示 465 GB,认为硬盘缩水
✓ 修复硬盘厂商用 1 GB = 1,000,000,000 字节(十进制),操作系统用 1 GB = 1,073,741,824 字节(二进制)

IEC 标准区分 GB(十进制)与 GiB(二进制)。硬盘厂商、网络带宽常用十进制,内存、文件系统常用二进制。换算时需确认上下文。

3.KB 与 KiB 的符号误写

✗ 错误将 1024 字节记为 1 KB
✓ 修复1024 字节应记为 1 KiB(Kibibyte),1 KB(Kilobyte)是 1000 字节

IEC 80000-13 标准规定:KB 是 10³ = 1000,KiB 是 2¹⁰ = 1024。混写会导致 2.4% 误差,在 TB 级别误差可达数十 GB。

4.网络速率单位误读

✗ 错误100 Mbps 宽带下载速度应为 100 MB/s
✓ 修复100 Mbps 宽带理论最大下载速度约为 12.5 MB/s

网络速率通常以 bit 为单位(Mbps = Megabits per second),而下载速度常以 Byte 为单位(MB/s)。100 Mbps ÷ 8 = 12.5 MB/s。

5.二进制换算时忘记 2¹⁰ = 1024 而非 1000

✗ 错误1 GB = 1000 MB(二进制场景)
✓ 修复1 GiB = 1024 MiB(二进制场景)

二进制每级进率是 1024(2¹⁰),不是 1000。1 GiB = 1024 MiB = 1,048,576 KiB。误用 1000 会导致每级误差 2.4%,多级累计显著。

6.TB 与 TiB 在存储容量上的混淆

✗ 错误4 TB 硬盘实际容量应为 4,000,000,000,000 字节
✓ 修复4 TB 硬盘标称容量为 4,000,000,000,000 字节(十进制),操作系统显示约 3.64 TiB

硬盘厂商用十进制 TB,操作系统用二进制 TiB 显示。4 TB 十进制 = 4×10¹² 字节,换算成二进制为 4×10¹² ÷ 2⁴⁰ ≈ 3.64 TiB。

7.小单位换算时忽略前缀定义

✗ 错误1 KB = 1024 字节,所以 1 MB = 1,048,576 字节
✓ 修复1 KB = 1000 字节(十进制),1 MB = 1,000,000 字节;或 1 KiB = 1024 字节,1 MiB = 1,048,576 字节

前缀 k、M、G 在十进制中分别是 10³、10⁶、10⁹;在二进制中分别是 2¹⁰、2²⁰、2³⁰。混用前缀定义会导致整个换算链出错。

8.文件大小与内存容量的单位混用

✗ 错误内存 8 GB 与文件大小 8 GB 使用同一进制
✓ 修复内存容量通常使用二进制(8 GiB),文件大小取决于文件系统(常为二进制)

内存寻址天然基于 2 的幂,所以 DDR 内存容量总是二进制。文件系统如 NTFS 也使用二进制,但硬盘厂商用十进制。同一数值在不同场景含义可能不同。

第三节

工作原理

How It Works

核心公式

B = 8 × b

变量说明

  • B字节数,单位 Byte
  • b比特数,单位 bit

示例

一个网络数据包大小为 4096 bit,转换为字节:B = 8 × 4096 = 32768 Byte,即 32 KB(按 1024 进制)。

输入数值+单位(如 1024 MB)单位识别(B/KB/MB/GB/TB)进制判定(1000/1024)换算引擎(乘/除 1024ⁿ)结果(多种单位)关键逻辑1. 根据单位识别进制:B/KB/MB/GB/TB 默认 10242. 用户可切换 1000 进制(SI 标准)3. 全部在浏览器内完成,无网络请求
用户输入 / 结果 解析与判定 换算引擎
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

def convert_storage(value: float, from_unit: str, to_unit: str, base: int = 1000) -> float: """ 存储单位换算,支持 bit / B / KB / MB / GB / TB base=1000 或 1024 """ units = ['bit', 'B', 'KB', 'MB', 'GB', 'TB'] if from_unit not in units or to_unit not in units: raise ValueError(f"单位必须是 {units}") from_idx = units.index(from_unit) to_idx = units.index(to_unit) # 先统一转成字节 if from_unit == 'bit': bytes_val = value / 8 else: bytes_val = value * (base ** (from_idx - 1)) # 再转目标单位 if to_unit == 'bit': return bytes_val * 8 else: return bytes_val / (base ** (to_idx - 1)) # 示例:1 GB(1000进制)转 MB print(convert_storage(1, 'GB', 'MB', 1000)) # 输出 1000.0 # 示例:1 GiB(1024进制)转 MiB print(convert_storage(1, 'GB', 'MB', 1024)) # 输出 1024.0
function convertStorage(value, fromUnit, toUnit, base = 1000) { const units = ['bit', 'B', 'KB', 'MB', 'GB', 'TB']; const fromIdx = units.indexOf(fromUnit); const toIdx = units.indexOf(toUnit); if (fromIdx === -1 || toIdx === -1) throw new Error('Invalid unit'); // 统一转字节 let bytes; if (fromUnit === 'bit') { bytes = value / 8; } else { bytes = value * Math.pow(base, fromIdx - 1); } // 转目标单位 if (toUnit === 'bit') { return bytes * 8; } else { return bytes / Math.pow(base, toIdx - 1); } } console.log(convertStorage(1, 'GB', 'MB', 1000)); // 1000 console.log(convertStorage(1, 'GB', 'MB', 1024)); // 1024
package main import ( "fmt" "math" "strings" ) func convertStorage(value float64, fromUnit, toUnit string, base int) (float64, error) { units := []string{"bit", "B", "KB", "MB", "GB", "TB"} fromIdx := -1 toIdx := -1 for i, u := range units { if u == fromUnit { fromIdx = i } if u == toUnit { toIdx = i } } if fromIdx == -1 || toIdx == -1 { return 0, fmt.Errorf("invalid unit") } var bytes float64 if fromUnit == "bit" { bytes = value / 8 } else { bytes = value * math.Pow(float64(base), float64(fromIdx-1)) } if toUnit == "bit" { return bytes * 8, nil } return bytes / math.Pow(float64(base), float64(toIdx-1)), nil } func main() { result, _ := convertStorage(1, "GB", "MB", 1000) fmt.Println(result) // 1000 result, _ = convertStorage(1, "GB", "MB", 1024) fmt.Println(result) // 1024 }
#!/usr/bin/env bash # 存储单位换算(bash 浮点运算用 bc) # 用法: ./convert.sh <value> <from_unit> <to_unit> <base> # 示例: ./convert.sh 1 GB MB 1000 value=$1 from=$2 to=$3 base=${4:-1000} # 单位索引映射(bit=0, B=1, KB=2, MB=3, GB=4, TB=5) idx_from=$(echo "0") case $from in bit) idx_from=0 ;; B) idx_from=1 ;; KB) idx_from=2 ;; MB) idx_from=3 ;; GB) idx_from=4 ;; TB) idx_from=5 ;; *) echo "Invalid unit"; exit 1 ;; esac idx_to=$(echo "0") case $to in bit) idx_to=0 ;; B) idx_to=1 ;; KB) idx_to=2 ;; MB) idx_to=3 ;; GB) idx_to=4 ;; TB) idx_to=5 ;; *) echo "Invalid unit"; exit 1 ;; esac # 统一转字节 if [ "$from" = "bit" ]; then bytes=$(echo "scale=10; $value / 8" | bc) else exp=$(( idx_from - 1 )) bytes=$(echo "scale=10; $value * ($base ^ $exp)" | bc) fi # 转目标单位 if [ "$to" = "bit" ]; then result=$(echo "scale=10; $bytes * 8" | bc) else exp=$(( idx_to - 1 )) result=$(echo "scale=10; $bytes / ($base ^ $exp)" | bc) fi echo "$result"
fn convert_storage(value: f64, from_unit: &str, to_unit: &str, base: i32) -> Result<f64, String> { let units = vec!["bit", "B", "KB", "MB", "GB", "TB"]; let from_idx = units.iter().position(|&u| u == from_unit).ok_or("Invalid from_unit")?; let to_idx = units.iter().position(|&u| u == to_unit).ok_or("Invalid to_unit")?; let base = base as f64; // 统一转字节 let bytes = if from_unit == "bit" { value / 8.0 } else { value * base.powi((from_idx - 1) as i32) }; // 转目标单位 let result = if to_unit == "bit" { bytes * 8.0 } else { bytes / base.powi((to_idx - 1) as i32) }; Ok(result) } fn main() { println!("{}", convert_storage(1.0, "GB", "MB", 1000).unwrap()); // 1000 println!("{}", convert_storage(1.0, "GB", "MB", 1024).unwrap()); // 1024 }
第五节

常见问题

Q & A
我有个 1TB 的硬盘,为什么电脑里显示只有 931GB?

这是厂商和操作系统使用的进制不同造成的。硬盘厂商按 1TB = 1000GB(十进制)标称,但 Windows 等系统按 1TB = 1024GB(二进制)计算,所以 1000GB ÷ 1.024 ≈ 976.56GB,再扣除文件系统开销后显示 931GB 是正常现象。本工具支持在“1000 进制”和“1024 进制”间切换,可以分别算出两种值,方便对比差异。

我想把 500MB 的视频压缩到 200MB,怎么用这个工具算?

本工具只做单位换算,不做压缩计算。不过你可以用它先算出目标大小对应的比特率:比如视频时长 10 分钟(600 秒),目标 200MB = 200 × 8 = 1600Mb,比特率 = 1600 ÷ 600 ≈ 2.67Mbps。这个结果可以给压缩软件(如 HandBrake)作为参考值。注意压缩后画质会下降,建议先试压一段看看效果。

为什么我在网上下载的固件是 64MB,解压后变成 134MB?

因为文件系统的最小分配单元(簇)不同,以及固件包内包含元数据(校验和、分区表等)。例如 FAT32 的簇大小是 4KB,大量小文件会导致每个文件至少占用 4KB,实际占用空间远大于文件本身大小。本工具算的是“文件内容大小”,不是磁盘占用空间。若需精确了解占用,需查看操作系统中的“占用空间”属性。

输入 2GB 后,结果区显示 2048MB 和 2000MB 两个数,哪个是对的?

两个都对,只是标准不同。2048MB 是二进制换算(1GB=1024MB),常用于内存、操作系统报告;2000MB 是十进制换算(1GB=1000MB),常用于硬盘、U 盘标称和网络带宽。本工具同时显示两种结果,方便你在不同场景下取用。比如买内存时看二进制值,买硬盘时看十进制值。

这个换算支持小数吗?比如 1.5GB 能不能算?

支持。输入框可以接受小数,例如 1.5GB,结果区会同时给出 1500MB(十进制)和 1536MB(二进制)。注意不要带多余空格或单位简写错误(如写成 1.5G 会识别为 1.5GB,但 1.5Gb 是小写 b,表示比特而非字节,结果会差 8 倍)。如果不确定输入格式,参考输入框下方提示的示例。

我输入 1024KB 为什么显示 1MB 和 0.9766MB?

因为 1024KB 在二进制下正好是 1MB,在十进制下是 1024 ÷ 1000 = 1.024MB,反过来 1MB(十进制)= 1000KB,所以 1024KB 十进制显示为 1.024MB。本工具默认将输入的数值按你选择的进制解释。如果你输入 1024KB 且当前进制是二进制,结果区会显示“1MB(二进制)/ 1.024MB(十进制)”,两个值都标明了对应的进制。

这个工具能算比特(bit)和字节(Byte)的换算吗?

可以。输入框支持的单位包含 bit、B、KB、MB、GB、TB,并且区分大小写:小写 b 表示比特(bit),大写 B 表示字节(Byte)。例如输入 8bit 会显示 1B。注意网络带宽常用 bps(比特/秒),下载速度常用 B/s(字节/秒),8:1 的换算关系是本工具最常用的场景之一。

为什么单位列表里有 KiB、MiB,和 KB、MB 有什么区别?

KiB(Kibibyte)是国际电工委员会(IEC)制定的二进制前缀,1KiB = 1024B;KB(Kilobyte)是国际单位制(SI)十进制前缀,1KB = 1000B。本工具默认使用十进制(KB/MB/GB),但可以在设置中切换为二进制前缀(KiB/MiB/GiB)。如果你的工作涉及内存寻址、Linux 系统 df 命令输出等,建议用二进制模式。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭