2~36進数の数値変換と桁の検証
16進数の-deadBEEFは36進数で-1PS9WXBになります。整数と、それが書かれている基数を入力し、2から36までの変換先を選ぶだけです。長い数も丸めずに正確に変換します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 数
- -deadBEEF
- 変換元の基数
- 16
- 変換先の基数
- 36
- 結果
- -1PS9WXB
基数間の数値変換では、整数の値を変えずに、ある位取り記数法から別の記数法へ書き換えます。数値を文字列で入力し、変換元の基数を指定して、2から36までの変換先基数を選択してください。計算前にすべての桁を検証し、英字の大文字と小文字をどちらも受け付け、有効な負号を保持したうえで、英字を大文字に統一した結果を返します。任意精度の整数演算を使うため、通常のJavaScript数値の限界を超える長い入力でも丸めず正確に扱えます。処理は決定的で、ネットワークサービスを利用せず、不正な数値や範囲外の基数は入力エラーとして通知します。
元の数値を正しく指定してください
まず、入力する数値が現在どの基数で表されているかをご確認ください。基数は、使用できる桁記号と各位置の重みを決めます。2進数では0と1だけ、8進数では0から7、10進数では0から9を使用し、16進数ではさらにAからFを使用します。
この規則は36進数まで続き、Zは三十五を表します。数値の前後には空白を置くことができ、先頭にはプラスまたはマイナスの符号を1つだけ付けられますが、符号の後には少なくとも1桁が必要です。0xや0bのようなプログラミング言語の接頭辞、桁区切り、コンマ、小数点、指数、単位は追加しないでください。
これらは整数用の文字体系に含まれないため、入力エラーになります。英字は大文字と小文字を区別しないので、16進数のffとFFは同じ値です。検証は指定された基数に従って行われます。
一般の文字体系に存在する記号でも、特定の基数では使えない場合があります。たとえば19は10進数としては正しい一方、8進数には九を表す桁がないため不正です。
正確な変換処理の仕組み
最初に、通常の位取り規則で変換元の文字列を評価します。左から右へ進みながら、それまでの値に変換元基数を掛け、次の桁の値を加えます。この方法は、2進数、10進数、16進数だけでなく、対応範囲内のすべての基数に同じように適用できます。
正確な整数値を求めた後、その絶対値を変換先基数で繰り返し割ります。各除算の余りが変換先の1桁となり、集めた余りを逆順に並べると最終表記が得られます。実装では処理全体を通して任意精度整数を使用します。
そのため、長い識別子やビット列が浮動小数点数の安全な範囲を超えても丸め誤差が生じません。出力の英字は常に大文字となり、不要な先頭の0は削除され、ゼロを表す入力はすべて正確に0へ正規化されます。マイナス記号は数学的な値がゼロ以外の場合だけ復元されるため、-000が別の負のゼロになることはありません。
乱数、時刻、地域設定、保存状態、外部通信、モデル呼び出しは使用しません。
返された文字列を安全に検証して利用します
成功時の応答では、resultが文字列として返されます。桁に英字が含まれる場合があり、非常に大きな整数は呼び出し側言語の数値型で正確に表せないこともあるため、結果は文字列のまま扱ってください。計算量とメモリー使用量を予測可能にするため、入力は4,096桁までに制限されています。
独立した確認方法として、2つの基数を入れ替えて結果を逆変換できます。先頭の0や英字の大小によって正規表記が異なっても、数学的な値は一致します。
活用例
数値識別子を短縮
長い10進識別子を、逆変換できるコンパクトな36進英数字文字列として表現します。
よくある質問
九より大きい桁の値はどのように表しますか?
AからZの英字で十から三十五を表します。入力時は大小文字を区別せず、出力時は大文字に統一します。
負の整数や非常に長い整数も変換できますか?
はい。 先頭の符号に対応し、任意精度演算により最大4,096桁の入力を正確に保持します。
どの基数に対応していますか?
変換元も変換先も、2から36までの整数の基数に対応しています。10より大きい桁はAからZの文字で表し、入力では大文字・小文字を区別しません。
0xや0bのような接頭辞を付けて入力できますか?
できません。代わりに変換元の基数を選び、数字だけを入力してください。接頭辞、カンマ、桁の間の空白、小数点は数の一部ではないため、推測せずに受け付けません。
8進数で入力した数が受け付けられないのはなぜですか?
各桁の値は基数より小さくなければなりません。19は10進数では有効ですが、8進数には値が9の桁がないため無効です。変換元の基数が正しいか確認してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev2/base-convert-number \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"101101","source_base":2,"target_base":16}'const res = await fetch("https://api.kit.forhosting.com/dev2/base-convert-number", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "101101",
"source_base": 2,
"target_base": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/base-convert-number",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "101101",
"source_base": 2,
"target_base": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/base-convert-number", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"101101","source_base":2,"target_base":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"101101","source_base":2,"target_base":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/base-convert-number", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"number": "101101",
"source_base": 2,
"target_base": 16
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.base_convert_number",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_digits | 4096 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
元の数値を正しく指定してください
元の表記をnumberフィールドに、その基数をsource_baseフィールドに入力してください。
正確な変換処理の仕組み
同じ3つのフィールドからは、常にバイト単位で同じ文字列が返されます。
返された文字列を安全に検証して利用します
この出力は、データベース識別子、ビットマスク、アクセス権、プロトコルフィールド、チェックサム、学習問題、テストデータに適しています。source_baseとtarget_baseは、2から36までの整数でなければなりません。基数がない場合、整数でない場合、範囲外の場合、numberが文字列でない場合、数字部分が空の場合、句読記号が混ざる場合、または桁の値が変換元基数以上の場合はinvalid_inputになります。この応答は入力検証の失敗として扱い、同じデータを再送せず、示されたフィールドを修正してください。単発の変換はブラウザーで実行でき、自動化したAPIリクエストの公開料金は1回$0.002です。
連携の活用例
低レベルの値を確認
レジスター、ビットマスク、ファイル権限、プロトコルフィールドを2進数、8進数、10進数、16進数で相互に表示します。
決定的なテストデータを作成
パーサー、演習、移行確認、言語間回帰テストのために、正確な期待文字列を生成します。
技術的な質問
どの変換元基数と変換先基数に対応していますか?
どちらの基数も、2から36までの整数を指定してください。
変換元基数で使えない桁が含まれるとどうなりますか?
invalid_inputで失敗し、不正な桁と指定された変換元基数を通知します。
APIによる変換の料金はいくらですか?
APIは1リクエストあたり$0.002です。単発の変換はブラウザーでも実行できます。