Base32768
用法(这是JavaScript,尽管移植了
base32768
另一种编程语言的模块非常实用):
var base32768 = require("base32768");
var buf = new Buffer("d41d8cd98f00b204e9800998ecf842", "hex");
var str = base32768.encode(buf);
console.log(str);
var buf2 = base32768.decode(str);
console.log(buf.equals(buf2));
Base32768从基本多语言平面中选择32768个字符。当表示为UTF-16时,每个字符需要2个字节,当表示为UTF-8时,每个字符需要3个字节,这恰好给出了您描述的效率特征:240位可以存储在16个字符中,即UTF-16的32个字节或UTF-8的48个字节。(除了偶尔的填充字符,类似于
=
在Base64中可以看到填充。)
这是通过将输入字节(即8位无符号数)切成15位无符号数,并将得到的每个15位数字分配给32768个字符中的一个来实现的。
请注意,选择的字符也是“安全的”——没有空格、控制字符、组合发音符号或易受规范化损坏。