我看到这段代码示例没有任何解释:
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
行是做什么的?为什么AND
与0xFF
?如果重要的话,这段代码是用JavaScript编写的。
答案 0 :(得分:3)
代码似乎存储了一个字节值。显然,开发人员认为c
可能包含超过8位(一个字节)的数据。通过AND
使用0xff,超出8位的任何数据都会被删除(或至少设置为零)。