2進数デコードのガイド:区切りを誤れば結果も誤る
2進数のデコードは「半分だけ正しい」ことがほとんどありません。1ビット欠ける、別の文字が混ざる、それだけで以降の区切りがすべてずれます。
例を人の読める形に戻す
教材、プロトコル仕様、面接問題では 01001000 01101001 のような列がそのまま出てきます。手計算は遅く、間違えやすいものです。ビットフィールドの資料や古いシステムのダンプも同じ作業です。
自分で書いたビット演算の下書きを確認する用途もあります。中間結果を展開して文字に戻し、シフトの向きが逆でないかを確かめられます。デバッガの代わりにはなりませんが、仮説の検証には十分です。
- 教材や仕様書の2進数例の復元
- 自分のビット演算結果の確認
- 古いシステムや教材用ダンプの読み取り
結果を決める3つの条件
1つ目、必ず8ビット1組です。空白で分割して各組をバイトとして読むため、7ビットや9ビット、途中で切れた組は誤った値になります。2つ目、先頭ゼロを残すこと。01000001 と 1000001 は別の入力です。
3つ目、0と1以外を含めないこと。英字やカンマ、全角文字が混ざるとその組は不正になり、0バイトや文字化けとして現れます。結果が完全におかしいときは、元をコピーし直してください。不可視文字が混ざることがよくあります。
- 1組は必ず8ビット、空白区切り
- 0と1のみ。全角や不可視文字に注意
- おかしいときはまずコピーし直す
文字コード以外は何も知らない
デコードするのは UTF-8 だけです。元が GBK や UTF-16、圧縮データなら、置換文字や意味不明な文字になります。デコーダの不具合ではなく、そのバイト列が UTF-8 のテキストではないだけです。
暗号でもありません。8ビットずつ読めば誰でも戻せるので、パスワードを隠す用途には使えません。さらに16進数の4倍の長さになります。バイトを記録したいときは16進数や Base64 を選んでください。
- UTF-8 のみ。GBK や UTF-16 は推測しない
- 暗号ではなく、内容を隠せない
- バイトの記録は16進数か Base64 で
よくある質問
1ビット足りないとどうなりますか
足りない位置から後ろの区切りがすべてずれ、元と無関係なバイトになります。ツールは桁数の不足を警告しないため、貼る前に全体のビット数が8で割り切れるか確認してください。
なぜ文字化けするのですか
元データが UTF-8 のテキストでないか、0と1以外が混ざっているかのどちらかがほとんどです。使用文字と8ビット区切りを確認し、それでも駄目なら元の文字コードを調べてください。
バイナリファイルもデコードできますか
できません。ここはテキストのバイト展開を戻す道具です。画像や圧縮ファイル、実行ファイルは、形式を理解する専用のビューアやパーサが必要です。
関連ツール:2進数デコーダー