😽ブラウザ内でバイナリを圧縮してコードやlocalStorageに埋め込む2022/04/28に公開3件WebAssemblyJavaScripttechDiscussionHajime Hoshi2022/04/30 バイナリなら問題ないですが日本語はもうちょっと工夫が必要そうです。 よく分からなかったのですが、任意のバイナリに対応しているわけではない、ということでしょうか? 返信を追加mizchi2022/05/06書くのサボったんですが、コードポイントが u16 を超えてると、UInt16Array への変換処理で溢れて壊れました 返信を追加nujarum2023/06/23に更新これは・・・ Uint8Array ⇔ Uint16Array のところがエンディアン依存・・・ですよね? 今回の用途は 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) 返信を追加
Hajime Hoshi2022/04/30 バイナリなら問題ないですが日本語はもうちょっと工夫が必要そうです。 よく分からなかったのですが、任意のバイナリに対応しているわけではない、ということでしょうか? 返信を追加
nujarum2023/06/23に更新これは・・・ Uint8Array ⇔ Uint16Array のところがエンディアン依存・・・ですよね? 今回の用途は 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) 返信を追加
Discussion
よく分からなかったのですが、任意のバイナリに対応しているわけではない、ということでしょうか?
書くのサボったんですが、コードポイントが u16 を超えてると、UInt16Array への変換処理で溢れて壊れました
これは・・・
Uint8Array⇔Uint16Arrayのところがエンディアン依存・・・ですよね?今回の用途は
localStorageとのことなので、同一環境での enc/dec だと存じますが、encode された文字列を異なる環境間で同等に扱うには、上位/下位 bit の扱いを統一する等の改変が必要そうですね。
(Little Endian 方式に統一すれば、
slice(0, -1)等の条件分岐は不要になる?かも・・・)