Javascript 二进制数据处理和按位和

Javascript 二进制数据处理和按位和,javascript,binary,bitwise-operators,Javascript,Binary,Bitwise Operators,我在没有任何解释的情况下看到了这个代码示例: var xhr = new XMLHttpRequest(); xhr.open('GET', '/path/to/image.png', true); // Trick to pass bytes through unprocessed. xhr.overrideMimeType('text/plain; charset=x-user-defined'); xhr.onreadystatechange = function(e) { if

我在没有任何解释的情况下看到了这个代码示例:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/image.png', true);

// Trick to pass bytes through unprocessed.
xhr.overrideMimeType('text/plain; charset=x-user-defined');

xhr.onreadystatechange = function(e) {
  if (this.readyState == 4 && this.status == 200) {
    var binStr = this.responseText;
    for (var i = 0, len = binStr.length; i < len; ++i) {
      var c = binStr.charCodeAt(i);
      //String.fromCharCode(c & 0xff)
      var byte = c & 0xff;  // byte at offset i
    }
  }
};

xhr.send();
var xhr=new-XMLHttpRequest();
open('GET','/path/to/image.png',true);
//通过未处理的文件传递字节的技巧。
xhr.overrideMimeType('text/plain;charset=x-user-defined');
xhr.onreadystatechange=函数(e){
if(this.readyState==4&&this.status==200){
var binStr=this.responseText;
对于(变量i=0,len=binStr.length;i

我想知道那一行是什么偏移量i处的字节
正在运行吗?为什么
带有
0xFF
?如果有必要的话,这段代码是用JavaScript编写的。

这段代码似乎在存储一个字节值。显然,开发人员认为
c
可能包含超过8位(一个字节)的数据。通过使用0xff进行
运算,任何超过8位的数据都会被删除(或至少设置为零)。

字节在
[0255]
范围内,
&0xff
等于
%255
,因此它会返回一个有效字节。我建议读取位运算符。即使你不打算每天都使用它们,了解它们也是件好事,而且了解IMO非常有趣。嗯,我明白了,是的,现在我明白了。