这个JS代码在做什么

时间:2014-09-24 18:38:24

标签: javascript character-encoding

那段代码在做什么?

var buf = new ArrayBuffer(fileContent.length);
var view = new Uint8Array(buf);
for (var i=0; i!=fileContent.length; ++i)
    view[i] = fileContent.charCodeAt(i) & 0xFF;

在FileSaver.js的功能上下文

saveAs(new Blob([buf],{type:""}), filename);

我无法获得此代码的整个目标(除了保存buf的最后一个字符串),如果我们要保存 buf view 的原因>,以及 view 如何对应 buf ,那是什么 fileContent.charCodeAt(i)& 0xFF 命令是什么意思?

1 个答案:

答案 0 :(得分:2)

charCodeAt(i)获取i字符串的fileContent字符,并将其字符代码作为数字返回。 & 0xFF在该数字与十六进制数AND之间执行二进制0xFF运算;它将其屏蔽为低8位。然后,它将该8位数存储到view[i]

所以这一切基本上是将字符串从fileContent复制到buf,但剥离任何高位以获得8位字符。

这里的显式屏蔽并不是必需的。分配给Uint8Array会自动将模值分配为256。