【问题标题】:What is a base64 length in bytes?什么是 base64 长度(以字节为单位)?
【发布时间】:2013-06-28 20:53:57
【问题描述】:

我有一个以 Base64 编码的文件,具有一定的文件长度。如何获取以字节为单位的大小?

例子:

var size= canvas.toDataURL();   

console.log(resizeCanvasURL.length);


// -> 132787  base64 length

【问题讨论】:

标签: javascript canvas base64


【解决方案1】:

Base64 编码中的每个符号包含 6 位信息。普通文件中的每个符号都包含 8 位。因为在解码后,您需要的信息量相同:

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

【讨论】:

  • 是的,有一段时间我认为 64 是 2 的 5 次方 :)
  • 以及如何计算:132787 //base64 长度
  • 如果你有一个 132787 大小的 base64 文件,那么正常大小将是 132787 * 0.75
  • 你说的很对,对不起,因为我的愚蠢考试,我两天没睡
【解决方案2】:

mishik 的回答是错误的。

Base64 用 =-chars 填充(具有正确数量的位)。所以应该是

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

【讨论】:

  • 我找到了更好的解决方案:将 Base64 字符串转换为“普通”字符串,然后读取长度: var str = atob(base64); var byteLength = str.length;
  • 我不确定这个解决方案是否准确。我得到了不好的结果。
  • 正确的代码示例,应该是:var byteLength = parseInt((str).replace(/=/g,"").length * 0.75);
  • 你是对的。右括号太多了。
  • 不是 Math.floor(parseInt((str).replace(/=/g,"").length * 0.75))) 吗?
【解决方案3】:
const stringLength = resizeCanvasURL.length 
const sizeInBytes = 4 * Math.ceil(stringLength / 3) * 0.5624896334383812;
const sizeInKb = sizeInBytes / 1000;

或

 const stringLength = resizeCanvasURL.length 
 const sizeInBytes = stringLength * (3 / 4) - 2;
 const sizeInKb = sizeInBytesNew / 1000;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多