Base 32
#エンコーディング #ULID #BaseHoge
Base32とは
32種類の文字を使うテキスト表現
要件
人間にも機械にも読みやすい
コンパクトであること(長すぎると人間が扱えないから)
キーボードがなくても入力できる程度の手軽に扱える文字であること
人間が電話で他人に伝えられるような文字であること
-> asciiコードでも難しいらしく、半角英数字
余談パート:Baseについて
Base10:数字
Base64:みんな大好きなやつ
Base32:5ビットで表せる文字の集まりらしい
Base16:16進数表現(0 - 9, A - F)
Symbols
Base16のスーパーセット
Base10 + i, l, o, uの4文字を除いた32文字で構成
Base32デコード時は大文字小文字を許容するけど、エンコード時は大文字だけで出てくる
i, lがデコード時に入ってきた場合は、1として扱う
oがデコード時に入ってきた場合は0として扱う
符号化する数値のビット長は5の倍数。
5の倍数にならない場合は、5の倍数になるように0伸長する
ハイフンは文字列が見やすいようにセパレータの役割として使うこともできる
デコード時無視する
Check Symbol
上記Symbolとは別にCheck Symbolを追加できる
*, ~, $, =, uの5種類
句読点、URLの書式と混同しないものを選んでるらしい(日本人にはちょっとよくわからない)