コンテンツにスキップ

ファイルサイズ単位変換表

B / KB / KiB / MB / MiB / GB / GiB の変換早見表。プログラム実装・設定値の確認・テスト設計にご活用ください。

SI(10進)vs IEC(2進)— 単位ごとに乖離が拡大 KB / KiB KB = 1,000 B KiB = 1,024 B (+2.4%) MB / MiB MB = 1,000,000 B MiB = 1,048,576 B (+4.9%) GB / GiB GB = 10^9 B GiB = 2^30 B (+7.4%) OS は GiB を「GB」と表示することが多い
図: 10^3 と 2^10 の差は単位ごとに拡大する

SI単位系(10進数)とIEC単位系(2進数)の違い

ファイルサイズを表す単位には、国際単位系(SI)に基づく10進数単位と、IECが制定した2進数単位の2種類があります。特に「MB」と「MiB」の混同が境界値テストの失敗につながることがあります。

SI単位読み方バイト数 IEC単位読み方バイト数
KBキロバイト1,000 KiBキビバイト1,024 +2.4%
MBメガバイト1,000,000 MiBメビバイト1,048,576 +4.86%
GBギガバイト1,000,000,000 GiBギビバイト1,073,741,824 +7.37%
TBテラバイト1,000,000,000,000 TiBテビバイト1,099,511,627,776 +9.95%

MB → バイト 変換表

MB(10進数)バイト数MiB(2進数)バイト数
0.1 MB100,000 B0.1 MiB104,858 B
0.5 MB500,000 B0.5 MiB524,288 B
1 MB1,000,000 B1 MiB1,048,576 B
2 MB2,000,000 B2 MiB2,097,152 B
5 MB5,000,000 B5 MiB5,242,880 B
10 MB10,000,000 B10 MiB10,485,760 B
20 MB20,000,000 B20 MiB20,971,520 B
25 MB25,000,000 B25 MiB26,214,400 B
50 MB50,000,000 B50 MiB52,428,800 B
100 MB100,000,000 B100 MiB104,857,600 B
256 MB256,000,000 B256 MiB268,435,456 B
512 MB512,000,000 B512 MiB536,870,912 B
1 GB1,000,000,000 B1 GiB1,073,741,824 B

主要サービス・ツールでの単位の解釈

サービス / 設定単位表記実際の解釈
PHP(php.ini)MMiB(2進数)10M = 10,485,760 B
Nginx(client_max_body_size)mMiB(2進数)10m = 10,485,760 B
Apache(LimitRequestBody)バイト指定バイト(直値)10485760 = 10 MiB
Windows エクスプローラーMB と表示MiB(2進数)で計算「9.99 MB」= 10,476,544 B
macOS FinderMB と表示MB(10進数)「10 MB」= 10,000,000 B
Linux(ls -lh)MMiB(2進数)10M = 10 MiB
Gmail 添付上限25 MBMB(10進数)25,000,000 B
AWS S3 コンソールMiB 表示MiB(2進数)表示通り

計算式

// JavaScript での変換関数
const UNITS = {
    // SI(10進数)
    KB: 1_000,
    MB: 1_000_000,
    GB: 1_000_000_000,
    TB: 1_000_000_000_000,
    // IEC(2進数)
    KiB: 1_024,
    MiB: 1_048_576,
    GiB: 1_073_741_824,
    TiB: 1_099_511_627_776,
};

const toBytes = (value, unit) => value * UNITS[unit];
const fromBytes = (bytes, unit) => bytes / UNITS[unit];

// 例: 10 MiB を バイトに変換
console.log(toBytes(10, 'MiB')); // → 10485760

// 例: 10000000 バイトを MB に変換
console.log(fromBytes(10_000_000, 'MB')); // → 10
console.log(fromBytes(10_000_000, 'MiB').toFixed(2)); // → 9.54
 1_000, 'MB' => 1_000_000, 'GB' => 1_000_000_000,
        'KiB' => 1_024, 'MiB' => 1_048_576, 'GiB' => 1_073_741_824,
    ];
    return (int)($value * ($units[$unit] ?? 1));
}

echo toBytes(10, 'MiB');  // → 10485760
echo toBytes(25, 'MB');   // → 25000000

境界値テスト用ファイルとの対応

DevLab では、主要なアップロード上限に合わせた境界値テスト用ファイルを提供しています。単位の解釈に合わせて適切なファイルを選択してください。

❓ よくある質問

1GB は 1000MB ですか、1024MB ですか?
SI 接頭辞としての GB は 1000MB です。1024MB を指すのは GiB(ギビバイト)で、2 進接頭辞と呼ばれます。ストレージメーカーは SI で容量を表記し、Windows は GiB の値を GB と表示するため、500GB のドライブが 465GB と見えます。ずれは約 7% で、テラバイト帯ではさらに広がります。
アップロード上限を設定するとき、どちらの単位で計算すべきですか?
設定する側のソフトウェアが解釈する単位に合わせてください。PHP の upload_max_filesize と nginx の client_max_body_size はどちらも M を 1024×1024 として扱うので、実質 MiB です。一方でユーザーに「10MB まで」と案内すると 10,000,000 バイトと受け取られます。境界ちょうどのファイルで実測して、案内文と実装をそろえるのが確実です。
ネットワーク速度の Mbps とファイルサイズの MB は何が違いますか?
小文字の b はビット、大文字の B はバイトで、1 バイトは 8 ビットです。100Mbps の回線で理論上流せるのは毎秒 12.5MB ほどで、実際はプロトコルのオーバーヘッドで 1 割前後落ちます。100MB のファイルなら理想値で 8 秒、現実には 9〜10 秒が目安になります。