二进制数据处理和按位与

发布于 2024-11-24 07:32:09 字数 727 浏览 1 评论 0原文

我看到这个代码示例没有任何解释:

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; // 偏移量 i 处的字节正在做什么?为什么使用 AND0xFF?如果重要的话,此代码是用 JavaScript 编写的。

I saw this code sample without any explanation:

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();

I wonder what that line var byte = c & 0xff; // byte at offset i is doing? Why AND with 0xFF? This code is in JavaScript if that matters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一指流沙 2024-12-01 07:32:09

该代码似乎存储了一个字节值。显然,开发人员认为 c 可能包含超过 8 位(一个字节)的数据。通过与 0xff 进行“与”运算,任何超过 8 位的数据都会被修剪掉(或至少设置为零)。

The code appears to be storing a byte value. Apparently, the developer thought it was possible that c could contain more than 8 bits (a byte) of data. By ANDing with 0xff, any data beyond 8 bits is trimmed off (or at least set to zero).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文