進数変換ツール
2進数、8進数、10進数、16進数の間で数値をリアルタイムに変換、または2〜36の任意の2つの進数間で変換します。
いずれかのフィールドに入力すると、残りの3つがリアルタイムに更新されます。負の数や任意の大きさの整数に対応しています。
カスタム進数変換
2〜36の任意の2つの進数間で変換します。
仕組み
入力した各値は、ブラウザに組み込まれた任意精度整数型であるJavaScriptのBigIntとして解析されます。解析は入力を1桁ずつ処理し、累計値を基数倍しながら各桁の値を加算します。逆変換は目標の基数で繰り返し除算し、余りを収集します。9より大きい桁は文字を使用するため、基数36では0-9の後にa-zが続きます。負の数も扱えます。解析前に先頭のマイナス記号が取り除かれ、最後に再び付加されます。
知っておく価値があるのはBigInt部分です。通常のJavaScript数値の上に構築された変換ツールは、9,007,199,254,740,991(2^53 - 1)を超える値を警告なしに静かに壊してしまいます。これは浮動小数点がすべての整数を正確に表現できなくなる境界だからです。ffffffffffffffffのような16桁の16進値をそうしたツールに貼り付けると、警告なしに丸められた誤った答えが返ってきます。ここでの計算はどんな桁数でも正確です。100桁の10進数も正しく2進数に変換されます。ただ、桁数が多くなるだけです。
各フィールドは入力中にそれぞれの基数に対して検証されるため、8進数ボックスに9を入力したり16進数にgを入力したりすると、無意味な結果ではなくエラーが表示されます。他の3つのフィールドは、編集したフィールドに基づいてリアルタイムに更新されます。これらはすべてタブ内で行われます。DevToolsのNetworkパネルを確認すると、入力中にページが一切リクエストを送信していないことがわかります。そのため、変換する数値があなたのマシンから外に出ることはありません。