calc / byte
Byte 単位変換
バイト(B)・キロバイト(KB)・メガバイト(MB)・ギガバイト(GB)・テラバイト(TB)を相互変換します。 SI(10進・1KB=1000B)とIEC(2進・1KiB=1024B)の両方に対応しています。
入力単位
プリセット
SI(10進)
1 KB = 1,000 B
B1000000
KB1000
MB1
GB0.001
TB1.0000e-6
IEC(2進)
1 KiB = 1,024 B
B1048576
KiB1024
MiB1
GiB9.7656e-4
TiB9.5367e-7
使い方
01- 数値入力欄に変換したい数値を入力してください
- 入力単位ボタン(B / KB / MB / GB / TB)から基準となる単位を選択してください
- SI(10進)とIEC(2進)それぞれの換算結果がリアルタイムで表示されます
- プリセットボタン(1KB / 1MB / 1GB / 1TB)を使うと素早く一般的な値を入力できます
実装コード
02外部ライブラリ不要で純粋なTypeScriptのみで実装。乗数テーブルで各単位を定義し、変換と表示フォーマットを純粋関数として分離しています。そのままコピーして利用できます。
export type Unit = 'B' | 'KB' | 'MB' | 'GB' | 'TB'
export type ConvertResult = {
si: Record<Unit, string> // SI単位系(10の累乗: 1KB=1000B)
iec: Record<Unit, string> // IEC単位系(2の累乗: 1KiB=1024B)
}
const SI_MULTIPLIERS: Record<Unit, number> = {
B: 1,
KB: 1_000,
MB: 1_000_000,
GB: 1_000_000_000,
TB: 1_000_000_000_000,
}
const IEC_MULTIPLIERS: Record<Unit, number> = {
B: 1,
KB: 1_024,
MB: 1_048_576,
GB: 1_073_741_824,
TB: 1_099_511_627_776,
}
function fmt(n: number): string {
if (!isFinite(n)) return '—'
if (n === 0) return '0'
if (n >= 0.001 && n < 1e15) {
const s = n.toPrecision(7)
return parseFloat(s).toString()
}
return n.toExponential(4)
}
export function convertBytes(valueStr: string, unit: Unit): ConvertResult | null {
const num = parseFloat(valueStr)
if (!isFinite(num) || num < 0) return null
const bytes = num * SI_MULTIPLIERS[unit]
const bytesIEC = num * IEC_MULTIPLIERS[unit]
const units: Unit[] = ['B', 'KB', 'MB', 'GB', 'TB']
const si = {} as Record<Unit, string>
const iec = {} as Record<Unit, string>
for (const u of units) {
si[u] = fmt(bytes / SI_MULTIPLIERS[u])
iec[u] = fmt(bytesIEC / IEC_MULTIPLIERS[u])
}
return { si, iec }
}よくある使用例・注意点
03SI(10進)とIEC(2進)の違い
SI単位系ではKBは1,000B、MBは1,000,000B(10の累乗)です。一方IEC単位系ではKiBは1,024B、MiBは1,048,576B(2の累乗)です。コンピューター科学では歴史的に1KB=1024Bとして扱われてきたため、両者を混同しやすい点に注意してください。
HDDとOSで容量表示が異なる理由
ハードディスクメーカーはSI単位系(1GB=1,000,000,000B)で容量を表示します。一方WindowsはIEC単位系(1GiB=1,073,741,824B)で表示するため、1TBのHDDはWindowsでは約931GBと表示されます。macOS(10.6以降)はSI単位系を採用しているため「1TB」と表示します。
ネットワーク速度との換算
通信速度のbps(bits per second)をファイル転送速度に換算するには8で割ります(1Byte=8bit)。例えば100Mbps回線の場合、理論上の転送速度は12.5MB/s(SI)です。実際にはプロトコルオーバーヘッドがあるためさらに遅くなります。
プログラムでのメモリ・ストレージ計算
プログラム内でメモリサイズやファイルサイズを扱う場合、OSのAPIが返す値はバイト単位です。人間が読みやすい表示に変換する際はIEC単位系(1024の累乗)を使うのが一般的ですが、ストレージ容量の表示にはSI単位系を使うケースが増えています。用途に応じて明示的に区別してください。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →