JavaScriptと合わせて使うWASMファイルをJavaScriptからimportして使えるJavaScript形式に変換するbin2jsの標準エンコード形式として、Base64より14%コンパクトになり、高速エンコードデコードに対応したBase128を、Base122のアイデアを使って作成。Ruby言語の構文解析「RubyParser」のコアのWASMを元の721KBから213KBまで減りました!
「Base128 encoding (UTF-8 space efficiency 8/7)」
Base64と同じ用に使えます。文字列はダブルクォートで囲って使ってください。Base122で文字化けすることがある問題を使用するコードを調整することで回避し、エディタで変換されるリスクがあるタブもエスケープするようにしました。エスケープするというより置き換えているので、Base121ではなくそのままBase128という名前にします。7bitらしさがありますね。
「Base128.test.str.js」
バイナリデータはこんな感じでブラウザやエディタ間でコピペ可能な文字列へと変換されます。コンソールへの貼り付けや、コンソールでの表示では文字化けてしまうのでご注意ください。
links
- Base64より効率良いBase122の有効性チェックとbin2js改良によるWASMインポート
- 東京都副知事宮坂さん訪問、Base128を作って分かったBase122の良さとUTF-8の2byte文字
- エンコード方式 base-122 | POSTD
- Base-122 Encoding