1. ホーム
  2. base64

[解決済み] Base64です。容量増加のワースト1位は?

2022-04-14 13:45:20

質問

サーバーがbase64文字列を受け取り、変換前にその長さをチェックしたい場合、最終的なバイト配列が16KBであることを常に許可したい場合を考えてみましょう。16KBのバイト配列は、Base64文字列に変換されたとき、どのくらいの大きさになる可能性がありますか(1文字につき1バイトと仮定)?

解決方法は?

Base64は3バイトのセットを4バイトにエンコードします。さらに、出力は常に4の倍数になるようにパディングされます。

つまり、サイズnの文字列をbase-64で表現した場合のサイズは、次のようになります。

ceil(n / 3) * 4

つまり、16kBの配列のBase-64表現は、ceil(16*1024/3)*4 = 21848 bytes long ~= 21.8kB となります。

A 荒い の近似値として、データサイズが元の4/3に増加することになります。