テキストと8進数の相互変換ツール

テキストの各バイトを 3 桁の8進数で書き出したり、8進数のバイト値の並びを読めるテキストに戻したりできます。UTF-8 や多くの従来の文字コードに対応しています。

すべてブラウザ内で処理され、データはアップロードされません。

使い方

  1. テキストを8進数に変換するには「エンコード」を、8進数の値をテキストに戻すには「デコード」を選択します。
  2. テキストや8進数を入力または貼り付けます。ファイルを開いて、そのバイト列を変換することもできます。
  3. 出力の「区切り文字」を「スペース」「なし」「カンマ」「改行」から選びます。
  4. 結果をコピーするか、ファイルとしてダウンロードします。

8進数とは

8進数(Base8)は、0~7 の数字で数値を表す記数法です。8進数の 1 桁はちょうど 3 ビットに相当するため、12 ビットの PDP-8 や 36 ビットの PDP-10 のように、ワード長が 3 の倍数だった初期のコンピューターで広く使われました。現在では、主にエスケープシーケンスや Unix のファイルパーミッションで使われています。

1 バイトは 0~255 の値を持ち、これは8進数で 0~377 になります。このツールは入力のすべてのバイトを、先頭のゼロを含めて必ず 3 桁の8進数で書き出します。そのため、どのグループも同じ幅になり、区切り文字なしでつなげても元に戻せます。テキストはまず、選択した文字コードでバイト列に変換されます。ASCII の文字は 1 文字 1 バイト、UTF-8 のそれ以外の文字は 1 文字 2~4 バイトです。

8進数のエスケープシーケンス

C、C++、Python、Perl、シェルの printf では、バックスラッシュに続けて最大 3 桁の8進数を書くことで 1 バイトを表せます。\101 は文字 A、\012 は改行(LF)です。

このツールは、バックスラッシュを付けずに数字だけを出力します。エスケープした文字列を作るには、スペース区切りの出力の各スペースをバックスラッシュに置き換え、最初のグループの前にもバックスラッシュを 1 つ付けます。エスケープシーケンスをデコードするには、逆にバックスラッシュをスペースに置き換えてください。デコーダーが受け付けるのは数字と区切り文字だけです。

755 のようなファイルパーミッションも8進数ですが、これはテキストではなく数値です。このような数値を2進数や10進数に変換するには、基数変換ツールを使用してください。

コードで8進数を扱う

# Python
' '.join(f'{b:03o}' for b in 'Hi'.encode())            # '110 151'
bytes(int(o, 8) for o in '110 151'.split()).decode()   # 'Hi'

# Shell
printf '\110\151\n'        # Hi と出力
printf 'Hi' | od -An -to1   # 110 151

仕様

使用文字0-7
出力サイズ1 バイトあたり 3 桁(300%)
パディングなし
規格8進数の位取り表記
大文字と小文字の区別なし

エンコード例

入力 (UTF-8)出力
Hello, World!110 145 154 154 157 054 040 127 157 162 154 144 041
Base64.is102 141 163 145 066 064 056 151 163
你好344 275 240 345 245 275

よくある質問

どのバイトも8進数 3 桁になるのはなぜですか?

最大のバイト値 255 は8進数で 377 なので、3 桁あれば必ず足ります。小さい値も先頭をゼロで埋めてすべてのグループを同じ幅にしているため、区切り文字のない文字列でもバイトに分割し直せます。

スペースのない8進数をデコードするにはどうすればよいですか?

数字をひと続きの文字列として貼り付けてください。デコーダーは 3 桁ずつに分割するため、長さが 3 の倍数である必要があります。3 桁に満たない値がある場合は、スペース、カンマ、改行で区切ってください。

400 のような値がエラーになるのはなぜですか?

8進数の 400 は 256 で、1 バイトに収まりません。有効なバイト値は 0~377 で、この範囲外のグループがあると、デコーダーはその位置を表示します。また、数字の 8 と 9 はそもそも8進数の数字として使えません。

別の文字コードで8進数の値を得ることはできますか?

はい。「文字コード」メニューで選択してください。たとえば日本語なら Shift_JIS や EUC-JP、中国語なら GBK を選べます。Windows-1252 や ISO-8859-1 では、西ヨーロッパの文字が 1 文字 1 バイトになります。