2023-08-26
#js 
データを文字化するエンコーディング。16384コの漢字を使ったエンコーディング「Base16384」も呪文っぽさがあって良いですが、視認性はいまいちです。もっと短く表現できないか?

ありました、点字です!


「点字#Unicode - Wikipedia」
一般的な点字は6点ですが、ユニコードには8点を含むちょうど256パターンの定義があります。U+2800〜U+28FF。

この点字を使ったエンコーディング、すでにqntm氏による実装「braille-encode」がありました。上位4ビットが左、下位4bitを右、それぞれ下が下位ビットになるように2進法で読めるよう、いい具合に並び替えてエンコーディングされています。


「Base256B braille-encode」

この仕様を踏襲し、Base256Bと名付けてESモジュール化。


「Base256B braille-encode char map」

一覧表を表示するデモアプリもつくってみました。


77までを拡大した表です。エンジニアには馴染み深い、二進法で読めますね!
6点の点字は下の空白を0と読むのがコツです。

128bitのUUIDを変換するとこんな感じです。 import { Base256B } from "https://code4fukui.github.io/Base256B/Base256B.js"; import { Base16 } from "https://code4fukui.github.io/Base16/Base16.js"; const uuid = "ba5698530e5878ed8d113c01e2dc89ae"; const b256b = Base256B.encode(Base16.decode(uuid)); console.log(b256b); // ⡭⡲⡉⣢⠸⡊⡎⢟⢙⣀⡜⢀⠧⡛⢉⠽ ba5698530e5878ed8d113c01e2dc89ae

⡭⡲⡉⣢⠸⡊⡎⢟⢙⣀⡜⢀⠧⡛⢉⠽

フォントによってかなり短くなってうれしいですね。

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS