2013-07-01 88 views
2

我有一個在Base64中編碼的文件,具有一定的文件長度。我如何獲得以字節爲單位的大小?什麼是以字節爲單位的base64長度?

實施例:

var size= canvas.toDataURL(); 

console.log(resizeCanvasURL.length); 


// -> 132787 base64 length 
+0

你的意思是你從base64解碼後的文件的長度?你必須先解碼它。 –

+0

Base64 - 5位,正常字符 - 8位=>'size * 1.6' – mishik

+0

@RobertHarvey我更新了我的帖子 – daisy

回答

8

在Base64編碼每個符號保持6個比特信息。普通文件中的每個符號都包含8位。由於解碼後你有相同數量的信息,你需要:

normal file size - 1000 bytes 
base64 file size - 1333 bytes 
+0

你現在確定嗎? – daisy

+0

是的,在短時間內我認爲64是2的5次冪:) – mishik

+0

以及如何計算:132787 // base64長度 – daisy

5

從mishik的答案是錯誤的。

Base64填充了= -chars(具有適當的位數)。所以它應該是

var byteLength = parseInt((str).replace(/=/g,"").length * 0.75)); 
+1

我發現了一個更好的解決方案:將Base64字符串轉換爲「普通」字符串,然後讀取長度:var str = atob(base64); var byteLength = str.length; –

+0

我不確定這個解決方案是否準確。我收到了不好的結果。 – jdmdevdotnet

+0

正確的代碼示例,應該是:'var byteLength = parseInt((str).replace(/ =/g,「」)。length * 0.75);' – GomatoX

相關問題