48 65 6C 6C 6F をテキストにすると?
Hello ASCII と UTF-8 では 48 が H、65 が e、6C が l、6F が o です。
16進数を文字列に、文字列を16進数に変換。スペース区切り・0x・\x、xxd や hexdump の出力、Java や C のバイト配列もそのまま貼るだけで、ASCII・UTF-8・GBK・UTF-16 を自動判別します。処理はすべてブラウザ内で完結。
素の16進数 として読み取り · 13 バイト
Hello, 世界
UTF-8 と自動判別:すべてのマルチバイトシーケンスが正しい形です。
結果自体が16進数です。2 回変換された可能性があります。もう一度デコードすると:
| エンコード | 読み取り結果 |
|---|---|
| UTF-8 問題なくデコード | Hello, 世界 |
| GBK / GB18030 問題なくデコード | Hello, 涓栫晫 |
| UTF-16LE デコードできないバイトあり | 效汬Ɐ隸闧� |
| UTF-16BE デコードできないバイトあり | 䡥汬漬⃤뢖� |
| ISO-8859-1 問題なくデコード | Hello, ä¸<96>ç<95><8C> |
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Go Tools のエンコード系ツールを開発するエンジニアが執筆・レビューしています。本ページに掲載した16進数の値と出力は、すべてページ自身のエンジンで生成し、自動テストで検証しています。
Hello ASCII と UTF-8 では 48 が H、65 が e、6C が l、6F が o です。
UTF-8 では通常 3 バイト、GBK では 2 バイト 你 は UTF-8 では E4 BD A0、GBK では C4 E3 です。
CR LF(\r\n) キャリッジリターンとラインフィードの組み合わせで、Windows、HTTP、大半のシリアルコマンド体系で使われる改行です。
41 小文字の a は 61 で、大文字と小文字の差は常に 20 です。
16進数(hex)はバイトを書き表す方法のひとつで、0〜255 の各バイトを 00 から FF までの 2 桁で表します。16進数から文字列への変換は、そのバイト列を読めるテキストに戻す処理で、必ず文字エンコード(文字コード)の選択を伴います。文字エンコードとは、どのバイト、あるいはどのバイト列がどの文字を表すかを定めた対応表のことです。
英語のテキストでは、この選択が表に出ることはめったにありません。ASCII、UTF-8、GBK をはじめ大半のエンコードが 00 から 7F までのバイトの意味で一致しているからです。それ以外の文字では、すぐに差が出ます。バイト C4 E3 BA C3 は GBK では 你好 ですが UTF-8 としては不正で、UTF-8 の 你好 は E4 BD A0 E5 A5 BD です。16進数は情報の半分にすぎず、残りの半分がエンコードです。
文字列から16進数への変換はその逆で、テキストをバイト列にエンコードしてから、各バイトを16進数 2 桁で書き表します。開発者はこれを使って、シリアル回線やデータベースのカラムに実際に何が入っているかを確かめたり、バイナリデータをソースコードに埋め込んだり、2 つのシステムが実際に送ったものを比較したりします。
$ echo 48656c6c6f | xxd -r -p
Hello
>>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好'
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte スペース区切り、区切りなし、コロンやハイフン区切り、0x 値、\x エスケープ、% エンコード、C・Go・Java の配列、Java の符号付き Arrays.toString 出力、Python の bytes リテラル、Node.js の Buffer、さらに xxd・hexdump -C・od の画面出力まで。何を認識し、何を取り除いたかをページが表示します。
自動判別はバイトオーダーマーク、正しい形の UTF-8、UTF-16、純粋な ASCII、最後に GBK の順にチェックし、どのルールで決まったかを示します。GBK を選ぶのはバイト列がよく使われる中国語の文字として読める場合だけなので、短いバイナリフレームは意味不明な中国語ではなく「おそらくテキストではない」と報告されます。
同じバイト列を UTF-8、GBK、UTF-16LE、UTF-16BE、ISO-8859-1 で表示し、それぞれ問題なくデコードできたかどうかを示します。テキストが文字化けしたときは、たいてい 1 行下に正しい読み方があります。
NUL、CR、LF、ESC などの制御バイトを ␀ ␍ ␊ ␛ で表示するので、プロトコルデータの末尾に余分な 00 があったり 0D が欠けていたりすればすぐにわかります。コピーすると実際の文字が得られます。
「テキスト → 16進数」では、スペース区切りまたは区切りなしの16進数、0x のリスト、\x エスケープ、xxd -i 形式の C 配列、符号付きの値を使った Java の byte[]、repr() と同じ形の Python bytes リテラル、Go の []byte、xxd 形式のダンプを出力できます。これらはすべて本ページで読み戻せます。
解析もデコードも、ローカルの JavaScript で実行されます。アップロード、保存、URL への付加は一切ないので、パケットキャプチャや本番ログも安心して貼り付けられます。
bytes.fromhex(h).decode() bytes.fromhex('48 65 6c 6c 6f').decode('utf-8') は 'Hello' を返します。バイト間のスペースは使えますが、0x プレフィックスは使えません。逆方向は s.encode('utf-8').hex() で、スペース区切りなら .hex(' ') です。GBK の中国語テキストをデコード・エンコードするには 'gbk' を渡します。
Buffer.from(h, 'hex') Buffer.from(h, 'hex').toString('utf8') でデコード、Buffer.from(s, 'utf8').toString('hex') でエンコードします。不正な入力でもエラーになりません。デコードは最初の不正なペアで止まり、末尾の余った 1 桁は捨てられるので、先に検証してください。
TextDecoder / TextEncoder parseInt(pair, 16) でペアを解析して Uint8Array に入れ、new TextDecoder('utf-8').decode(bytes) でデコードします。TextDecoder は 'gbk'、'big5'、'shift_jis' も読めますが、TextEncoder が出力できるのは UTF-8 だけです。
HexFormat.of() new String(HexFormat.of().parseHex(h), StandardCharsets.UTF_8) でデコード、HexFormat.of().formatHex(s.getBytes(StandardCharsets.UTF_8)) でエンコードします。古いバージョンでは各バイトを String.format("%02x", b) で書式化します。負のバイトを ffffffe4 と出力してしまう Integer.toHexString(b) は避けてください。
encoding/hex hex.DecodeString(h) でバイト列を得て string(b) で文字列にし、hex.EncodeToString([]byte(s)) で元に戻します。チェックは厳格で、スペースがあると invalid byte: U+0020 ' '、長さが奇数だと odd length hex string が返ります。
sscanf with %2hhx 文字列を 2 桁ずつループで unsigned char のバッファに読み込み、終端の '\0' を追加します。16進数で出力するときは unsigned char にキャストして %02X を使います。そうしないと、char が符号付きの環境では 0x7F を超えるバイトが FFFFFFE4 と出力されることがあります。
hex2bin() / bin2hex() hex2bin('48656c6c6f') は Hello を、bin2hex('Hello') は 48656c6c6f を返します。マニュアルには、長さが奇数または不正な入力に対して hex2bin() が E_WARNING とともに false を返すと記載されています。
xxd -r -p / xxd -p echo 48656c6c6f | xxd -r -p は Hello を出力し、printf 'Hello' | xxd -p は 48656c6c6f を出力します。エンコードするときは echo ではなく printf を使ってください。echo は末尾に改行 0a を追加するからです。
Convert.FromHexString() Encoding.UTF8.GetString(Convert.FromHexString(h)) でデコードし、Convert.ToHexString(Encoding.UTF8.GetBytes(s)) でエンコードします(大文字、区切り文字なし)。FromHexString はスペースや 0x プレフィックスを受け付けません。.NET Core と .NET 5 以降には GBK が含まれていないため、先に Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) を呼び出してから Encoding.GetEncoding(936) を使ってください。
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Hello, 世界
最初の 7 バイトは普通の ASCII です。48 65 6C 6C 6F が Hello、2C がカンマ、20 がスペースです。E4 B8 96 と E7 95 8C は 世 と 界 を表す 3 バイトの UTF-8 シーケンスで、中国語の文字の多くは UTF-8 で 3 バイトを使います。すべてのシーケンスが正しい形なので、自動判別は UTF-8 として読みます。
CE C2 B6 C8 3A 32 35 2E 33 A1 E6
温度:25.3℃
シリアル機器の多くは中国語のテキストを GBK で送ります。ここでは CE C2 が 温、B6 C8 が 度、3A 32 35 2E 33 が ASCII の :25.3、A1 E6 が全角の ℃ 記号で、中国語の文字や記号は 1 文字 2 バイトです。UTF-8 として読むとこのバイト列は不正で(CE は 2 バイトシーケンスの先頭ですが、C2 は継続バイトではありません)、GBK として読むとよく使われる文字になるので、自動判別は GBK を選びます。UTF-8 しか扱えない変換ツールでは、ここに置換文字が並ぶだけです。
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........
Hi 你好␍␊
これは printf 'Hi 你好\r\n' | xxd の出力そのものです。デコードの前に、オフセット 00000000: と右側の文字列カラムを取り除きます。これらをデータとして読むと、8 個のゼロだけで先頭に NUL バイトが 4 つ増えてしまいます。最後の 2 バイト 0d 0a は Windows の改行で、␍␊ と表示されます。
[-28, -72, -83, -26, -106, -121]
中文
Arrays.toString(bytes) は Java の符号付きバイトを 10 進数で出力します。負の値は 0x80 以上のバイトで、-28 は 256 − 28 = 228 = 0xE4 です。6 バイトの E4 B8 AD E6 96 87 は 中文 の UTF-8 エンコードです。
AT+CSQ\r\n
41 54 2B 43 53 51 0D 0A
モデムや大半の UART コマンド体系は、各コマンドの末尾にキャリッジリターンとラインフィードを求めます。テキスト入力欄で Enter を押しても 0A しか入らないので、改行を CR LF にするにチェックを入れると行末が 0D 0A になります。
653462646130653561356264
e4bda0e5a5bd → 你好
ここでは全バイトが ASCII の16進数字です(65 は e、34 は 4、62 は b)。そのため 1 回目のデコード結果もまた16進数の文字列になります。16進数の文字列をテキストとして扱い、もう一度変換すると起こる現象です。本ページは 2 回目のデコードを提案し、你好 が得られます。誤検知を避けるため、1 回目の結果が 12 桁以上の16進数で、かつ 2 回目が実際のテキストにデコードできる場合にだけ提案します。日付、タイムスタンプ、CRC32 値、MD5 ハッシュでは発動しません。
「16進数 → テキスト」タブの入力欄に、手元にある形式のまま貼り付けます。スペース区切り、区切りなし、0x 値、\x エスケープ、バイト配列、xxd の画面出力まるごとでも構いません。入力欄の下に、どの形式として読み取ったかが表示されます。
右側にテキストが表示され、自動判別したエンコードとその理由も示されます。推測が外れていたら、下の表ですべての読み方を確認し、「エンコード」メニューで正しいものを選んでください。
NUL、CR、LF などの制御バイトは ␀ ␍ ␊ で表示されます。「不可視文字を表示」のチェックを外して素のテキストにしてから、結果をコピーします。
「テキスト → 16進数」タブでエンコードと出力形式を選びます。スペース区切りの16進数、0x 値、C・Java・Python・Go の配列、xxd 形式のダンプから選べます。シリアル通信やネットワークプロトコル向けなら CR LF にチェックを入れます。
古い Windows ソフトウェア、多くのシリアル機器、レガシーなデータベースの中国語テキストは GBK です。UTF-8 でデコードすると失敗するか、出力が置換文字だらけになります。エンコード表を見て、意味の通る読み方を使ってください。
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte >>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好' charCodeAt() が返すのは UTF-16 のコードユニットです。ASCII ではたまたまバイトと一致するため、バグはそれ以外の文字で初めて表面化し、その値は UTF-8 のシステムが実際に送るものとは異なります。
'你'.charCodeAt(0).toString(16) // '4f60' — a UTF-16 code unit
Buffer.from('你', 'utf8').toString('hex') // 'e4bda0' — the UTF-8 bytes Java の byte は符号付きなので、0x80 以上のバイトは負の値になります。Integer.toHexString() は int を対象とし、負の値を 32 ビットの符号なし16進数で出力するうえ、先頭のゼロも省きます。
Integer.toHexString(b) // "ffffffe4" for 0xE4, "a" for 0x0A
String.format("%02x", b) // "e4", "0a" Buffer.from(hex, 'hex') は決して例外を投げません。16進数として不正な最初のペアで止まり、末尾の余った 1 桁を無視するので、タイプミスがあってもエラーにならず、短いバッファが返されるだけです。
Buffer.from('486', 'hex') // <Buffer 48> — the 6 is silently dropped
Buffer.from('48zz65', 'hex') // <Buffer 48> — stops at zz if (!/^([0-9a-f]{2})*$/i.test(hex)) throw new Error('invalid hex');
Buffer.from(hex, 'hex'); スペースを取り除くだけの変換ツールは、オフセット 00000000: をデータとして読み、文字列カラムも読める部分は16進数として読んでしまいます。結果は NUL バイトで始まり、そこから次々にずれていきます。素の16進数が欲しいなら xxd -p を使うか、列を認識できる本ページにダンプを貼り付けてください。
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........ → read naively: 00 00 00 00 48 69 20 e4 …
$ printf 'Hi 你好\r\n' | xxd -p 486920e4bda0e5a5bd0d0a
AT モデムや多くの行ベースのプロトコルは、各コマンドの末尾にキャリッジリターンとラインフィードを求めます。0A だけで終わるコマンドは、エラーも出ないまま無視されることがよくあります。
41 54 2B 43 53 51 0A AT+CSQ followed by LF only
41 54 2B 43 53 51 0D 0A AT+CSQ followed by CR LF
0D 0A や 00 も見つけられます。逆方向に使えば、機器が受け付ける CR LF 改行付きのコマンドを組み立てられます。b'...' リテラルで、Node.js は <Buffer ...> の形でログに出力します。ログの断片をそのまま貼り付ければ、UTF-8 か GBK かも含めてテキストを確認できます。00 から FF までの 2 桁になり、バイト数は常に桁数の半分です。大文字と小文字の意味は同じです。区切り文字、プレフィックス、配列の構文は表記にすぎません。4865、48 65、0x48, 0x65、\x48\x65 はどれも同じ 2 バイトです。00 から 7F までを割り当てています。表示可能な文字は 20(スペース)から 7E(~)までで、残りは制御文字です。実際のデータでよく見かけるのは 00(NUL)、09(タブ)、0A(ラインフィード)、0D(キャリッジリターン)、1B(エスケープ)です。UTF-8、GBK、ISO-8859-1 はいずれもこれらの値をそのまま保っているため、英語だけのテキストはエンコードを間違えてもほとんど崩れません。C2–DF なら 2 バイト、E0–EF なら 3 バイト、F0–F4 なら 4 バイトで、後続のバイトはすべて 80–BF の範囲に収まらなければなりません。この厳格な構造のおかげで、GBK の中国語の文が UTF-8 として正しい形になることはまずありません(中国語の文 33,910 件で試したところ、該当したのは 55 件でした)。自動判別が問題なく UTF-8 としてデコードできた結果を信頼するのはこのためです。ただし 1 文字だけの場合は事情が違い、GBK の文字の約 18% はたまたま正しい 2 バイトの UTF-8 シーケンスになります。81 から FE、後続バイトは 7F を除く 40 から FE です。後続バイトの範囲がとても広いため、短い UTF-8 のテキストを GBK として読むと、エラーもなく無関係な文字にデコードされることがよくあります。E4 BD A0 E5 A5 BD(你好)は 浣犲ソ になります。本ページが UTF-8 を先に試すのはこのためです。GB18030 は珍しい文字用の 4 バイトシーケンスを加えて GBK を拡張したもので、本ページのデコードはこれにも対応しています。41 00、UTF-16BE は上位バイトが先で 00 41 です。Windows の API や多くのファイルはリトルエンディアンを使い、先頭にバイトオーダーマーク FF FE が付くことがあります。UTF-8 のファイルも EF BB BF で始まることがあります。自動判別はバイトオーダーマークを取り除き、その旨を表示します。getBytes()、encode()、シリアルターミナルの設定、データベース接続の文字セット)でエンコードを明示的に指定し、16進数の横に書き添えておけば、受け取る側が推測する必要はありません。charCodeAt() や Java の char 値のように文字コードを返す関数は、エンコード後のバイトではなく UTF-16 のコードユニットを返します。まず TextEncoder、Buffer.from()、getBytes(StandardCharsets.UTF_8) で文字列をエンコードしてから、バイトを書式化してください。%02x などを使い、数値を16進数にするだけの呼び出しは避けます。a と 0a はログの中では似て見えますが、ゼロ埋めしていない値を連結すると長さが奇数の文字列になるか、さらに悪い場合は別のバイト列としてデコードされる文字列になります。00 から FF なので、48656c6c6f は 48、65、6C、6C、6F の 5 バイトです。次に、そのバイト列を文字エンコードに従ってデコードします。ASCII と UTF-8 では 48 が H、65 が e、6C が l、6F が o で、Hello になります。結果に違いが出るのは 2 段階目です。7F を超えるバイトは UTF-8、GBK などのエンコードごとに別の文字を表すため、本ページはエンコードを判別し、すべての読み方を並べて表示します。 C4 E3 BA C3 は GBK では 你好 ですが UTF-8 としては不正で、E4 BD A0 E5 A5 BD は UTF-8 では 你好 なのに GBK として読むと 浣犲ソ になります。結果の下にあるエンコード表を見てください。意味の通るテキストになっている行が、データが書かれたときのエンコードです。1〜2 文字しかない場合は、自動判別でも見分けられないことがあります。D2 BB は UTF-8 としても正しく(һ)、GBK としても正しい(一)ので、結果の下に表示される GBK の読み方を確認してください。ほかに疑うべき原因が 2 つあります。16進数の桁が 1 つ多いか少ないせいで以降のバイトがすべて半バイトずれている場合と、16進ダンプをオフセット列ごと貼り付けている場合です。16進数ではなく、すでに文字化けしたテキスト(浣犲ソ など)が手元にある場合は、そのテキストをエンコード変換・文字化け修復ツールに貼り付けてください。 E4 BD A0 E5 A5 BD が 浣犲ソ と表示されます。最後に、テキストに 00 や 0D 0A などの制御バイトが含まれていて、四角い記号や改行として表示される場合です。16進数をここに貼り付ければ、エンコード表に UTF-8 と GBK の読み方が並んで表示され、制御バイトは ␀ ␍ ␊ として表示されます。 00 から 7F までのバイトだけで、英字、数字、記号、制御文字が含まれます。UTF-8 はこれらのバイトがまったく同じ文字を表すように設計されており、それ以外の文字はすべて 80 以上のバイトを組み合わせたシーケンスで表します。アクセント付きのラテン文字は 2 バイト、中国語・日本語・韓国語の文字の大半は 3 バイト、絵文字は 4 バイトです。そのため英語だけのテキストなら、HEX から ASCII への変換と UTF-8 への変換は同じ結果になります。違いが出るのは 80 以上のバイトが現れたときです。ASCII 専用の変換ツールはそうしたバイトを文字として表示できませんが、UTF-8 なら Unicode の全範囲の文字にデコードできます。00 から 7F までの各バイトが何を表すかは、ASCII コード表で確認できます。 E4 BD A0 です。GBK と GB2312 では 2 バイトで、你 は C4 E3 です。UTF-16 では基本多言語面(BMP)の文字が 2 バイトで、バイト順が重要になります。你 は UTF-16LE では 60 4F、UTF-16BE では 4F 60 です。BMP の外にある珍しい文字は、UTF-8 で 4 バイト、UTF-16 で 4 バイト(サロゲートペア)、GB18030 で 4 バイトです。「テキスト → 16進数」タブでエンコードを切り替えると、自分のテキストのバイト数を確認できます。 bytes.fromhex() でバイト列にしてからデコードします。bytes.fromhex('48656c6c6f').decode('utf-8') は 'Hello' を返します。fromhex はバイト間のスペースを受け付けるので bytes.fromhex('48 65 6c 6c 6f') も動きますが、0x プレフィックスがあると ValueError になります。GBK のデータは 'gbk' でデコードします。bytes.fromhex('c4e3bac3').decode('gbk') は '你好' を返し、同じバイト列を UTF-8 でデコードすると UnicodeDecodeError が発生します。逆方向は '你好'.encode('utf-8').hex() で、'e4bda0e5a5bd' が返ります。.hex(' ') のように区切り文字を渡すと、スペース区切りで出力されます。 Buffer.from('48656c6c6f', 'hex').toString('utf8') が 'Hello' を返します。不正な入力には注意してください。Node は例外を投げず、最初の不正なペアで処理を止め、末尾の余った 1 桁は黙って捨てます。そのため Buffer.from('486', 'hex') は 1 バイトのバッファになります。ブラウザではバイト列を自分で組み立てて TextDecoder を使います。これは GBK も読めます。new TextDecoder('gbk').decode(Uint8Array.from('c4e3bac3'.match(/../g), h => parseInt(h, 16))) は '你好' を返します。バイトを得る目的で charCodeAt() を使ってはいけません。'你'.charCodeAt(0).toString(16) は '4f60' で、これは UTF-16 のコードユニットであり、UTF-8 のバイト e4bda0 ではありません。 unsigned char のバッファに読み込み、最後に終端文字を置きます。for (size_t i = 0; i < n; i++) sscanf(hex + 2 * i, "%2hhx", &buf[i]); buf[n] = '\0'; で、n は strlen(hex) / 2 です。hex を 48656c6c6f2c20e4b896e7958c にして UTF-8 のターミナルで buf を出力すると、Hello, 世界 と表示されます。逆方向は各バイトを printf("%02X ", (unsigned char)s[i]) で出力します。このキャストが重要で、char が符号付きのプラットフォームでは、0xE4 のようなバイトが符号拡張されて FFFFFFE4 と出力されてしまいます。C++ では、s.push_back(static_cast<char>(std::stoi(hex.substr(i, 2), nullptr, 16))) で 2 桁ずつ追加していけば、同じ hex から Hello, 世界 が得られます。 new String(HexFormat.of().parseHex(hex), StandardCharsets.UTF_8) の 1 行で済みます。GBK のデータなら代わりに Charset.forName("GBK") を使います。逆方向(バイトを16進数にする場合)では、ffffffe4 と表示されて戸惑うのが定番です。そうなるのは、Java の byte は符号付きで、Integer.toHexString() は int を受け取るからです。バイト 0xE4 は -28 として格納され、int に拡張しても値は -28 のままです。toHexString は負の数を符号なし 32 ビット値として出力するので、ffffffe4 になります。このメソッドは先頭のゼロも省くため、0x0A は a になります。負のバイトを符号なし 8 ビット値として書式化する String.format("%02x", b) を使うか、Integer.toHexString(b & 0xff) にゼロ埋めを組み合わせてください。Java 17 以降なら HexFormat.of().formatHex(bytes) で配列全体を変換でき、HexFormat.of().parseHex(hex) で元に戻せます。 hex2bin() は16進数の文字列をバイナリ文字列にデコードし、bin2hex() はその逆を行います。bin2hex('Hello') は 48656c6c6f を返します。PHP マニュアルによると、入力の長さが奇数だったり16進数として不正だったりすると hex2bin() は false を返して E_WARNING を発生させるので、呼び出す前にスペースや 0x プレフィックスを取り除いてください。PHP の文字列はバイト列なので、結果は元のテキストのエンコードのままです。ページが UTF-8 なら、GBK の出力は mb_convert_encoding() で変換してください。 xxd(-u、-c、-g を含む)、hexdump -C、Go の hex.Dump、od -A x -t x1、GNU の od -t x1z に対応し、hexdump や od が繰り返し行の代わりに出力する * 行も展開します。バイトではなく 16 ビットのワードを出力するオプションなしの hexdump と od -x も扱えます。リトルエンディアンのマシンではバイト 48 69 が 6948 と出力されるため、本ページは各ペアを入れ替えて元の順序に戻し、最後のオフセットを使って奇数長のデータに付け足されたパディングバイトを取り除きます。xxd、hexdump、od の各形式は、ランダムなデータを実際にダンプした 600 件でテストしています。 0a ではなく a)、コピー時に 1 文字切れた、0 の代わりに O のような文字が紛れ込んだ、などです。Python の hex(int.from_bytes(data, 'big')) のように全バイトを 1 つの大きな数として変換した16進数文字列は、先頭のゼロが失われます。\r\n は 0xd0a になります。本ページはどの桁が欠けたかを推測しません。推測を誤るとそれ以降のバイトがすべて半バイトずれ、もっともらしいのに無意味な結果になるからです。代わりに「先頭に 0 を追加」と「最後の桁を削除」の 2 つのワンクリック修正を用意しているので、結果を見比べられます。0x0 0xa のように値を 1 つずつプレフィックス付きで書いた場合は問題ありません。それぞれが 1 バイトとして読まれます。 エンコーディングとフォーマット
ASCII 128文字の完全なコード表。10進・16進・8進・2進を並べ、文字⇔ASCIIコードの双方向変換もその場でできます。制御文字には各言語のエスケープ、キャレット表記、そして実際にどこで出会うかを併記。すべてブラウザ内で動作し、入力は送信されません。
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
エンコーディングとフォーマット
Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。
エンコーディングとフォーマット
CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。
エンコーディングとフォーマット
文字化けしたテキストを貼り付けるだけで元の文字列を復元します。UTF-8、GBK、Big5、Shift_JIS、EUC-KR、Windows-1252 の組み合わせを総当たりで試し、往復検証を通ったチェーンを上位に並べて表示。各エンコードでのバイト対照と hex からの逆変換も可能です。無料・ブラウザ内処理で、貼り付けた内容は送信されません。
エンコーディングとフォーマット
.env ファイルを貼り付けるだけで即座に JSON に変換。データベースのパスワードや API キー、トークンはブラウザから一切出ません。100% プライベート、アップロード不要、無料の dotenv パーサー。