Base64エンコードされたときにデータのサイズがわかっている場合、データのサイズを計算することはできますか?
Base64でエンコードしたときのサイズが450KBのファイルがありますが、解凍するとどのサイズになりますか?
最初にファイルを解凍せずに出力サイズを見つける方法はありますか?
Base64でエンコードしたときのサイズが450KBのファイルがありますが、解凍するとどのサイズになりますか?
実際、「解凍」するのではなく、デコードします。結果は、エンコードされたデータよりも小さくなります。
Base 64エンコードでは、元のデータの6ビット(または3を格納するために4バイト)ごとに〜8ビットが必要なので、計算は簡単です。
Encoded Decoded
450KB / 4 * 3 = ~ 337KB
Base64とデコードされた文字列間のオーバーヘッドはほぼ一定で、33.33%です。文字列の長さが4の倍数になるように末尾のパディングバイト(=
)を埋め込んだだけで、「ほぼ」と言います。いくつかの例を参照してください。
String Encoded Len B64 Pad Space needed
A QQ== 1 2 2 400.00%
AB QUI= 2 3 1 200.00%
ABC QUJD 3 4 0 133.33%
ABCD QUJDRA== 4 6 2 200.00%
ABCDEFGHIJKLMNOPQ QUJDREVGR0hJSktMTU5PUFE= 17 23 1 140.00%
( 300 bytes ) ( 400 bytes ) 300 400 0 133.33%
( 500 bytes ) ( 668 bytes ) 500 666 2 133.60%
( 5000 bytes ) ( 6668 bytes ) 5000 6666 2 133.36%
... tends to 133.33% ...
エンコードされていないデータのスペースの計算:
上記の値QUJDREVGR0hJSktMTU5PUFE=
を取得しましょう。
エンコードされた値は24バイトです。
24/4 * 3 =>結果は18になります。
エンコードされた値の最後の=
sの数を数えます:この場合、1
(エンコードされたデータの最後の2バイトのみを確認する必要があります)。
18を取得(ステップ2で取得)-1(ステップ3で取得)17を取得
したがって、データを格納するには17バイトが必要です。
base64では、元のサイズの約3分の1が追加されるため、ファイルのサイズは.75 * 450kb程度になるはずです。