/** **************** define static table ***************** */ var encTable = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'); var decTable = new Array(256); // initial decTable for (i = 0; i < encTable.length; i++) { decTable[encTable[i]] = i; } /** **************** end static table ***************** */ function encode(str) { value = ""; pos = 0, val = 0; for ( var i = 0; i < str.length; i++) { val = (val << 8) | (str.charCodeAt(i) & 0xFF); pos += 8; while (pos > 5) { c = encTable[val >> (pos -= 6)]; value += c == 'i' ? "ia" : c == '+' ? "ib" : c == '/' ? "ic" : c; val &= ((1 << pos) - 1); } } if (pos > 0) { value += encTable[val << (6 - pos)]; if (pos == 2) { value += "=="; } else if (pos == 4) { value += "="; } } return value; } function decode(str) { pos = 0, val = 0; value = ""; for ( var i = 0; i < str.length; i++) { c = str.charAt(i); if (c == '=') { break; } if (c == 'i') { c = str.charAt(++i); c = c == 'a' ? 'i' : c == 'b' ? '+' : c == 'c' ? '/' : str.charAt(--i); } val = (val << 6) | decTable[c]; pos += 6; while (pos > 7) { value += String.fromCharCode((val >> (pos -= 8)) & 0xFF); val &= ((1 << pos) - 1); } } return value; }
JavaScript实现的base62 encode/decode,用于页面上直接对作为参数传递的url本身的编码和解码。...
最新推荐文章于 2025-01-09 10:03:25 发布
本文介绍了一种Base64编码与解码的具体实现方式,包括定义静态映射表并利用JavaScript进行编码和解码的过程。通过创建映射表完成字符到数值的转换,并详细展示了如何将任意字符串转换为Base64编码形式及其逆过程。
4368

被折叠的 条评论
为什么被折叠?



