2011-02-02 57 views
4

我使用下面的C#代碼的圖像文件轉換成一個base64字符串圖像轉換爲base64和檢查大小

using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) 
     { 
      var buffer = new byte[fs.Length]; 
      fs.Read(buffer, 0, (int)fs.Length); 
      var base64 = Convert.ToBase64String(buffer); 
     } 

如何我之前和大小後測試?即。圖像文件大小和基本64字符串的大小。我想通過使用轉換來檢查我是贏或輸。

+0

對於讀入緩衝區,嘗試`var buffer = File.ReadAllBytes(filename);` – 2011-02-02 23:57:30

回答

7

你可以用簡單的數學來計算它。 base64的一個字符表示6位,因此四個字符表示三個字節。所以你得到每個字符3/4字節。其中給出:

int base64EncodedSize = 4 * originalSizeInBytes/3; 

根據填充數據的方式,它可能會被一個或兩個字符關閉,但這不應該有所作爲。

另外,如果你懷疑base64可能是更多有效率,你究竟是什麼比較它?與原始二進制文件相比,它總是導致大小增加33%。

+0

實際上增加了167%,因爲`Convert.ToBase64String`返回一個unicode字符串。 – MusiGenesis 2011-02-02 23:47:17

0

你輸了 - base64字符串將使用更多的字節來存儲比你的原始圖像。如果這全部在內存中:.Net中的字符串是unicode,所以它們使用的字節數是ASCII編碼字符串的兩倍。