gpt4 book ai didi

javascript - charCodeAt(...) & 0xff 完成了什么?

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:45 25 4
gpt4 key购买 nike

我不确定 0xFF 在这里做什么...它只是为了确保二进制代码是 8 位长还是与有符号/无符号编码有关? ty.

var nBytes = data.length, ui8Data = new Uint8Array(nBytes);

for (var nIdx = 0; nIdx < nBytes; nIdx++) {
ui8Data[nIdx] = data.charCodeAt(nIdx) & 0xff;
}

XHR.send(ui8Data);

最佳答案

您的第一个猜测是对的。它只需要 data.charCodeAt 返回的最低有效 8 位 | .

charCodeAt 将返回 0..65536 范围内的值。此代码将该范围 chop 为 0..255。实际上,它获取字符串中的每个 16 位字符,假设它可以放入 8 位,并丢弃高位字节。

[6 年后编辑] 在评论中,我们发现了一些事情:您在质疑 the MDN polyfill for sendAsBinary 的代码.正如您所了解的,最低有效字节确实在小端系统中排在第一位,而最高有效字节在大端系统中排在第一位。 鉴于这是来自 MDN 的代码,该代码肯定会按预期执行 - 通过使用 FileReader.readAsBinaryString,它将 8 位值存储到 16 位的容器中。如果您担心数据丢失,可以使用 sData.charCodeAt(nIdx) && 0xff00 >> 8 调整 polyfill 以提取其他字节。

关于javascript - charCodeAt(...) & 0xff 完成了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com