BCDから2進数への変換
このBCDから2進数への変換ツールは、パック形式の8421二進化十進数を、通常の10進表記と純粋な2進表記の両方へ復号します。入力をニブル単位で確認するため、1010から1111までのビット群は誤った数値にせず、無効として報告します。読みやすい区切り文字と任意の0b接頭辞に対応し、文字列の結果によってJavaScriptの安全な整数範囲を超える値も正確に保持します。
無料で実行
パックBCDが表す内容を理解する
パック形式の8421二進化十進数は、通常の2進整数とは表現方法が異なります。BCDでは各10進数字に4ビットのニブルを1つずつ割り当てます。たとえば2は0010、5は0101、9は1001です。そのため、10進数の259は0010 0101 1001と表します。このビット列全体を通常の2進数として読むと、別の値になります。通常の2進表現は語全体に2の累乗を適用しますが、BCDは10進数字ごとに8-4-2-1の重みを最初から適用するためです。本ツールは必要な2段階の処理を行います。まず各ニブルを検証して復号し、10進数字列を復元します。次に、その正確な10進整数を通常の2進表記へ変換します。応答には正規化したBCDビット、10進結果、2進結果、BCD桁数が含まれるため、学習、回路検査、自動テストで各段階をご確認いただけます。
ビット群を入力して検証する
bcdフィールドに、4ビットで完結するグループを1つ以上入力してください。ビットを連続して記述できるほか、ニブルを空白、アンダースコア、ハイフンで区切り、先頭に任意で0bを付けることもできます。区切り文字は検証前に除去されるため、0010 0101 1001と0b0010_0101_1001は同じパック値を表します。残る文字はすべて0または1でなければならず、総ビット数は4で割り切れる必要があります。さらに、各ニブルは0000から1001まででなければなりません。1010から1111は2進値として存在しますが、標準8421 BCDの有効な10進数字ではありません。その場合は、不正なデータを黙って受け入れず、正確な位置を示して拒否します。先頭のゼロ桁は受け付けて正規化BCD欄に保持し、10進出力と通常の2進出力は標準形に整えます。たとえばBCD 0000 0101は、元の2ニブル表現をbcd結果に残したまま、10進数5と2進数101になります。
デジタル演算で正確な結果を利用する
10進結果と2進結果は意図的に文字列で返します。表示レジスタ、金融機器、カウンター、テストベクトルには、JavaScriptのNumberが正確に表せる範囲を超える桁数が含まれることがあります。浮動小数点を介すると、大きな識別子や測定値が次の工程へ届く前に丸められるおそれがあります。この実装は10進数字列を直接組み立て、正確な整数演算で変換し、ネットワーク、乱数、時刻に依存せず公開上限まで処理します。そのため、繰り返し実行しても決定的で、ゴールデンテストでも安全に比較できます。ハードウェア処理では、受信値の確認にbcd、作業者向けログにdecimal、演算装置やレジスタ幅の算定にbinaryをご利用ください。本ツールが復号するのは符号なしパック8421 BCDのみです。符号ニブル、アンパック文字コード、エクセス3、密集パック10進、メーカー固有のフラグビットは推測しません。
活用例
BCDレジスタダンプを確認する
グループ化されたレジスタビットを、確認用の10進数と後続演算用の通常2進数へ復号します。
デジタル論理の課題を検証する
提示された各BCDニブルが有効か確認し、復号値をその2進表記と比較します。
テストベクトルを正規化する
区切り付きの読みやすいBCDデータを、安定した10進、2進、コンパクトBCD文字列へ変換します。
よくある質問
1回の変換料金はいくらですか?
APIは1件あたり$0.002です。ブラウザー版はローカルで無料実行できます。
BCDと通常の2進数はなぜ異なるのですか?
BCDは各10進数字を4ビットずつ個別に符号化しますが、通常の2進数は値全体に2の累乗を割り当てます。
どのBCD形式に対応していますか?
4ビットの各ニブルに10進数字を1つ格納する、符号なしパック8421 BCDに対応しています。
1010から1111が拒否されるのはなぜですか?
これらは2進数では10から15ですが、BCDニブルが表せる10進数字は0から9までだからです。
空白や0b接頭辞を含められますか?
はい。空白、アンダースコア、ハイフン、先頭の0bを使用でき、正規化時に取り除かれます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/elec/bcd-to-binary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bcd":"0010 0101 1001"}'const res = await fetch("https://api.kit.forhosting.com/elec/bcd-to-binary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bcd": "0010 0101 1001"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/bcd-to-binary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bcd": "0010 0101 1001"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/bcd-to-binary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bcd":"0010 0101 1001"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bcd":"0010 0101 1001"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/bcd-to-binary", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"bcd": "0010 0101 1001"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.bcd_to_binary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_digits | 256 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |