一段JS代码作用

function getBytes(b) {

var c, d, e, f, h, i, j, k, l = 0,
m = [],g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
if (b) {
    b += "";
    do f = g.indexOf(b.charAt(l++)),
    h = g.indexOf(b.charAt(l++)),
    i = g.indexOf(b.charAt(l++)),
    j = g.indexOf(b.charAt(l++)),
    k = f << 18 | h << 12 | i << 6 | j,
    c = k >> 16 & 255,
    d = k >> 8 & 255,
    e = 255 & k,
    m.push(c),
    64 !== i && (m.push(d), 64 !== j && m.push(e));
    while (l < b.length)
}
return m

}
一段压缩的js 不知道什么用?转byte好像不是直接转的。

阅读 1.2k
1 个回答
function getBytes(b) {
var c, d, e, f, h, i, j, k, l = 0,
m = [],g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
if (b) {
b += "";//转字符串
do f = g.indexOf(b.charAt(l++)), //(b.chatAt(l++))返回b字符串的l+1位置字符,g.indexOf(b.chatAt(l++))返回指定字符在g字符串的位置

h = g.indexOf(b.charAt(l++)),//(b.chatAt(l++))返回b字符串的l+1位置字符,g.indexOf(b.chatAt(l++))返回指定字符在g字符串的位置
i = g.indexOf(b.charAt(l++)),
//(b.chatAt(l++))返回b字符串的l+1位置字符,g.indexOf(b.chatAt(l++))返回指定字符在g字符串的位置

j = g.indexOf(b.charAt(l++)),
//(b.chatAt(l++))返回b字符串的l+1位置字符,g.indexOf(b.chatAt(l++))返回指定字符在g字符串的位置

k = f << 18 | h << 12 | i << 6 | j, //f二进制位左移18位或者h二进制左移12位或者i二进制左移6位或者j赋值给k

c = k >> 16 & 255, //k二进制右移16位和255(即11111111)二进制与运算赋值给c
d = k >> 8 & 255, //k二进制右移8位和255(即11111111)二进制与运算赋值给d
e = 255 & k,  //255二进制(即11111111)和K进行与运算赋值给e
m.push(c),    //m数组push进c
64 !== i && (m.push(d), 64 !== j && m.push(e)); //64不等于i,m数组push进d  64不等于j并且m.push(e)不为0)
while (l < b.length) //当l小于b.length
}
return m 返回m
} 

你可能逗号运算符和位移运算符没理解,逗号运算符就看成一个从头到尾的执行顺序就可以啦,位移运算符就是按二进制进行移位

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题