進数変換 — 2進数・8進数・10進数・16進数を相互変換
2/8/10/16/36進数と任意の基数の変換(BigInt・負の数・0x/0b/0o接頭辞に対応)
ブラウザー内で処理・アップロード不要
進数変換ツールとは
同じ数でも、2進数では11111111、16進数ではff、10進数では255です。メモリーアドレス、カラーコード、ビットマスク、UNIXのファイルパーミッション(8進数)など、別の進数で値を読む場面はたくさんあります。ここに数を1つ入力すると、2進数・8進数・10進数・16進数・36進数と、好きな基数での表記を一度に確認できます。
使い方
- 数を入力します。スペースと
_は桁区切りとして無視されるので、1111_0000のように書いても大丈夫です。 - 入力の基数を選びます。初期設定の「自動」は
0x、0b、0oの接頭辞を探し、なければ10進数として扱います。 - 結果の表から必要な値をコピーします。任意の基数の行では、2〜36のどの基数でも指定できます。
ffよりFFのほうが好みなら、大文字表記をオンにします。
仕組み
- 解析には
BigIntを使います。左から1文字ずつ読み、値 = 値 × 基数 + 桁の形で積み上げるので、入力の上限である20,000文字以外にサイズの制限はありません。 - 桁には0〜9と英字a〜z(大文字小文字を区別しない)を使い、それぞれ0〜9と10〜35を表します。そのため基数は最大で36です。
- 基数以上の値を持つ桁があると、その位置と、その基数で使える桁を表示します。2進数の
2や8進数の9はエラーになります。 - 符号(
-または+)は先頭でのみ認識し、接頭辞の後ろには書けません。 - ビット数は、絶対値を2進数で書いたときの桁数です。0は1ビットと数えます。
例
| 入力 | 基数 | 2進数 | 16進数 | 10進数 |
|---|---|---|---|---|
255 |
10 | 11111111 | ff | 255 |
0xff |
自動 | 11111111 | ff | 255 |
-0b101 |
自動 | -101 | -5 | -5 |
18446744073709551617 |
10 | 1、0が63個、1 | 10000000000000001 | 18446744073709551617 |
2^64+1はJavaScriptの普通の数値では最後の桁が失われますが、このツールなら16進数で正確に10000000000000001と表示されます。
補足
- 8進数は
chmod 755、16進数はアドレスや#1e90ffのような色、36進数は短いIDをコンパクトに書くときに使われます。 - 10進数に英字や日本語が紛れ込むなど、桁として使えない文字が入っていると、エラーで何文字目かを示します。
よくある質問
とても大きな数も正確に変換できますか?
はい。JavaScriptの普通の数値は2^53までしか正確に表せませんが、このツールは任意精度の整数(BigInt)で計算するので、2^64を超える値でも1桁の誤差もなく変換できます。入力は20,000文字まで受け付けます。
負の数はどのように表示されますか?
符号はそのままにして絶対値を変換するので、-255は16進数で-ffになります。2の補数のビットパターンではありません。8ビットなど固定幅の2の補数が必要な場合は、結果をご自身で読み替えてください。
0xや0bの接頭辞を付けて入力できますか?
入力の基数が「自動」なら、0x(16進数)、0b(2進数)、0o(8進数)の接頭辞を認識し、接頭辞がなければ10進数として扱います。基数を自分で選んだ場合は、それに合った接頭辞だけを受け付けます。16進数では0b1は接頭辞ではなく、0、b、1という3つの桁として読まれます。
小数は変換できますか?
対応しているのは整数だけです。小数点は不正な文字として、その位置とともに表示されます。