😽

ブラウザ内でバイナリを圧縮してコードやlocalStorageに埋め込む

に公開3

Discussion

Hajime HoshiHajime Hoshi

バイナリなら問題ないですが日本語はもうちょっと工夫が必要そうです。

よく分からなかったのですが、任意のバイナリに対応しているわけではない、ということでしょうか?

mizchimizchi

書くのサボったんですが、コードポイントが u16 を超えてると、UInt16Array への変換処理で溢れて壊れました

nujarumnujarum

これは・・・
Uint8ArrayUint16Array のところがエンディアン依存・・・ですよね?

今回の用途は localStorage とのことなので、同一環境での enc/dec だと存じますが、
encode された文字列を異なる環境間で同等に扱うには、上位/下位 bit の扱いを統一する等の改変が必要そうですね。
(Little Endian 方式に統一すれば、slice(0, -1) 等の条件分岐は不要になる?かも・・・)

console.log([...new Uint8Array(Uint16Array.of(0x100).buffer)])
// » [0, 1] (LE) or [1, 0] (BE)