xxd コマンドを知ったので冗長な UTF-8 表現を作ってみる修行
今までずっと od しか使っていなかったけれど、hexdump や xxd なんていうダンプコマンドがあることを知った。xxd は逆変換もできるらしいので、UTF-8 の冗長な表現を作ってみることにした。原理は知っていたけれど、実際にやってみたことがなかったから。
「?」を冗長表現してみる。
? 3f 0011 1111
だから、
1100 0000 1011 1111 c0 bf 1110 0000 1000 0000 1011 1111 e0 80 bf 1111 0000 1000 0000 1000 0000 1011 1111 f0 80 80 bf
ということで、
]$ echo -n 3f 2d c0bf 2d e080bf 2d f08080bf 0a | xxd -r -p ?-?-?-?
おお。
xxd の逆変換は使えるなあ。でも、変換はこれからも od を使っちゃうんだろうな。
追記
まだ先があったよねえ。
1111 1000 1000 0000 1000 0000 1000 0000 1011 1111 f8808080bf 1111 1100 1000 0000 1000 0000 1000 0000 1000 0000 1011 1111 fc80808080bf
$ echo -n 3f 2d c0bf 2d e080bf 2d f08080bf 2d f8808080bf 2d fc80808080bf 0a | xxd -r -p ?-?-?-?-?-^@^@^@$
おおお、6 bytes のは駄目だった。これは面白い。
ちなみに、当たり前かもしれないけれど、
$ echo -n c0bf | xxd -r -p | od -An -tx1 c0 bf
であって、3f じゃないよ、ってことで。