チャットやSNSなどで「分かる人には分かるよね」的なメッセージを送りたいときに
難読化することはないですか??(ないですよねきっと)
maji darui -> 1101101 1100001 1101010 1101001 100000 1100100 1100001 1110010 1110101 1101001
という風に文字列をバイナリ化してみます
xxd -b を使うのが楽です
# シンプルな実装
alias a2b='xxd -b | cut -c11-63 | tr "\n" " "
# バイナリ文字列の先頭のゼロを削り、さらに末尾に改行を付けて出力する例
alias a2b='xxd -b | cut -c11-63 | sed "s/\b00*//g" | tr "\n" " " | sed "s/$/\n/"'
bc でバイナリ->hex変換し、xxdで文字列化すると楽です
alias b2a="tr ' ' '\n' | sed '1iobase=16;ibase=2' | bc | sed 's/^.$/0&/' | tr -d '\n' | xxd -r -ps"
a2b は「バイナリ文字列の先頭のゼロを削り、さらに末尾に改行を付けて出力する例」を使ってます
$ echo maji darui | a2b
1101101 1100001 1101010 1101001 100000 1100100 1100001 1110010 1110101 1101001 1010
$ echo 1101101 1100001 1101010 1101001 100000 1100100 1100001 1110010 1110101 1101001 1010 | b2a
maji darui
# 記号や制御文字も大丈夫
$ echo -e "ore\tore _>[sagi]<_\nzettai *DAME*" | a2b | b2a
ore ore _>[sagi]<_
zettai *DAME*
2バイト単位で処理しているので、ASCIIコード変換機 とは異なる結果になります(互換性はありません)
$ matsuya | tee /dev/stderr | a2b | tee /dev/stderr | b2a
プレミアム牛めしプレート
11100011 10000011 10010111 11100011 10000011 10101100 11100011 10000011 10011111 11100011 10000010 10100010 11100011 10000011 10100000 11100111 10001001 10011011 11100011 10000010 10000001 11100011 10000001 10010111 11100011 10000011 10010111 11100011 10000011 10101100 11100011 10000011 10111100 11100011 10000011 10001000 1010
プレミアム牛めしプレート