convert / number-base

進数変換

2進数・8進数・10進数・16進数を相互変換します。ビット演算・組み込み開発・ネットワークアドレス計算など幅広い用途に対応しています。

2進数 (BIN)
8進数 (OCT)
10進数 (DEC)
16進数 (HEX)

使い方

01
  1. タブで入力する進数(2進 / 8進 / 10進 / 16進)を選択してください
  2. 入力欄に値を入力すると、リアルタイムで全進数への変換結果が表示されます
  3. 各行の「コピー」ボタンで変換結果をクリップボードにコピーできます
  4. 16進数は大文字(A–F)で出力されます。先頭の 0x / 0b / 0o は参考表示です(コピー時は含まれません)

実装コード

02

ブラウザ標準の parseIntNumber.prototype.toString のみで実装。外部ライブラリ不要でそのままコピーして利用できます。

export type Base = 2 | 8 | 10 | 16

export type ConvertResult =
  | { ok: true; bin: string; oct: string; dec: string; hex: string }
  | { ok: false; error: string }

export function convertBase(value: string, fromBase: Base): ConvertResult {
  const trimmed = value.trim()
  if (!trimmed) return { ok: false, error: '' }

  const validChars: Record<Base, RegExp> = {
    2: /^[01]+$/,
    8: /^[0-7]+$/,
    10: /^[0-9]+$/,
    16: /^[0-9a-fA-F]+$/,
  }
  if (!validChars[fromBase].test(trimmed)) {
    return { ok: false, error: `${fromBase}進数として無効な文字が含まれています` }
  }

  const decimal = parseInt(trimmed, fromBase)
  if (!Number.isSafeInteger(decimal)) {
    return { ok: false, error: '数値が大きすぎます(2^53-1 を超えています)' }
  }

  return {
    ok: true,
    bin: decimal.toString(2),
    oct: decimal.toString(8),
    dec: decimal.toString(10),
    hex: decimal.toString(16).toUpperCase(),
  }
}

よくある使用例・注意点

03
ビット演算のデバッグ
JavaScriptやCなどでビット演算(AND, OR, XOR, シフト)を行う際、2進数での確認が欠かせません。例えば 0xFF & 0x0F = 0x0F(255 & 15 = 15)を視覚的に確認する際、このツールで各値の2進数表現を比較することで論理の誤りを見つけやすくなります。
組み込み開発・レジスタ設定
マイコンのレジスタ設定はデータシートで16進数(例: 0x3C)として記載されることが多いですが、実際のビット意味を理解するには2進数への変換が必要です。また、8進数はUnixのファイルパーミッション(chmod 755 など)の確認にも使われます。
安全に扱える数値の上限
このツールはJavaScriptの Number 型を使用しているため、2^53-1(9007199254740991)を超える値は正確に扱えません。64ビット整数が必要な場合は BigInt を使った実装を検討してください。大きな数値を入力するとエラーメッセージが表示されます。
16進数の大文字・小文字
このツールでは16進数の出力は大文字(A–F)で統一しています。CSSのカラーコード(#ff0000)やシェルスクリプトでは小文字が使われることもありますが、値としては同一です。コピーした後に必要に応じて変換してください。

関連ツール

04
ハッシュ生成UUID生成文字数カウンター

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →