gpt4 book ai didi

javascript - 为什么这个代码有 3 个八位字节超过 4 个字符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:36:23 25 4
gpt4 key购买 nike

我正在努力理解 this JavaScript base64 decoding code但我对 lines 70-84 的这个循环感到困惑:

for (i=0; i<bytes; i+=3) {  
//get the 3 octects in 4 ascii chars
enc1 = this._keyStr.indexOf(input.charAt(j++));
enc2 = this._keyStr.indexOf(input.charAt(j++));
enc3 = this._keyStr.indexOf(input.charAt(j++));
enc4 = this._keyStr.indexOf(input.charAt(j++));

chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;

uarray[i] = chr1;
if (enc3 != 64) uarray[i+1] = chr2;
if (enc4 != 64) uarray[i+2] = chr3;
}

具体来说,我想知道为什么 4 个 ascii 字符中只有 3 个八位字节。不应该有 4 个八位字节吗?

最佳答案

因为 3 个八位字节需要 24 位存储空间。在 base 64 中,每个字符(ascii 字符)有 6 位。 4 个字符 * 6 位 = 24 位,因此 24 位需要 4 个 base64 字符。

关于javascript - 为什么这个代码有 3 个八位字节超过 4 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15005688/

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