私は16から4096バイトの範囲のバイナリデータの束をたくさん持っています。これらはデータベースに保存する必要があり、ユニットとして簡単に比較できるはずです(たとえば、長さが一致し、すべてのバイトが一致する場合にのみ、2つのデータバッチの束)。文字列はそのために便利ですが、バイナリデータを盲目的に文字列に変換すると、文字エンコード/再解釈の問題が原因で問題が発生する傾向があります。
Base64は、7ビットASCIIが標準であった時代に文字列を格納するための一般的な方法でした。その33%のスペースペナルティは少し厄介でしたが、ひどいものではありませんでした。残念ながら、UTF-16を使用している場合、スペースペナルティは166%(3を格納するために8バイト)であり、かなり厄介なようです。
バイナリデータを有効なUnicode文字列に保存するための一般的な保存方法はありますか?これにより、UTF-16の効率が向上します(UTF-8ではそれほどひどくなりません)。ベース32768コーディングでは、16文字で240ビットが格納され、32バイトのUTF-16または48バイトのUTF-8が必要になります。比較すると、base64コーディングでは40文字が使用され、80バイトのUTF-16または40バイトのUTF-8が必要になります。UTF-8またはUTF-16で同じスペースを使用するように設計されたアプローチでは、UTF-8またはUTF-16のいずれかで8バイトを使用する3文字で48ビットを格納し、いずれかのUTFの40バイトで240ビットを格納する場合があります。 -8またはUTF-16。
そのようなものの基準はありますか?