二进制数据处理和按位AND

时间:2011-07-15 14:24:57

标签: 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 (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 byte = c & 0xff; // byte at offset i行是做什么的?为什么AND0xFF?如果重要的话,这段代码是用JavaScript编写的。

1 个答案:

答案 0 :(得分:3)

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