base64
what:
(text)メッセージを、6bit(2^6=64) 64文字(a-z, A-Z, 0-9, +,/)を使って、書き換える(encode)もの
asciiは7bit(128文字). utf-8などは8bitで、8/6で、1.3倍くらいのbit列の差になる。
わかりやすい説明だった。
すべてのデータをアルファベット(a~z, A~z)と数字(0~9)、一部の記号(+,/)の64文字で表すエンコード方式です
あと、データ長を4の倍数にする。最後の4文字であまりがでたら? 最後に = で埋める。
why:
文字数が増えても、url safeな文字で構成できる。
現在では、JSONなどで特殊文字を含まないように画像データをbase64でエンコードしたり、Webページの表示の際にリクエスト数を減らすためにbase64でエンコードした画像をhtmlにそのまま埋め込むなどの用途で用いられています
すべてのデータを英数字で表すMIME(Multipurpose Internet Mail Extensions)という規格が登場し、その中でbase64というデータの変換方法が定められました
で、メールでのニーズがあった。
MIMEが、すべてのデータを英数字で表す ための規格なのは、、理解してなかった。 where:
cookie
基本 base64でencodeされてる。64文字で収まる
"." がある場合は、値が連結されてる。
tips:
最初の文字が ey みたいに始まると、
JSON文字列は、配列がルートでなく余計な空白が除去してあれば、'{"' (\u007b\u0022) から始まるため
jqで、-r で、outputの double quoteを除いて、base64に渡す code: gcppubsub.cmd
gcloud pubsub subscriptions pull projects/my-project/subscriptions/my-sub --format=json | \
jq -r '.[]|.message.data'|base64 -d