function debase32(b){ let ans = ""; let nx = 0; let nc = 0; for(let i = 0; i < b.length; i++){ let c = b.charCodeAt(i); let n = 0; if(0x41 <= c && c <= 0x5a){ //A-Z n = c - 0x41; }else if(0x61 <= c && c <= 0x7a){ //a-z n = c - 0x61; }else if(0x32 <= c && c <= 0x37){ //2-7 n = c - 0x32 + 26; }else if(c == 0x30){ //0 n = 14; }else if(c == 0x31){ //1 n = 8; }else{ continue; } n |= nx << 5; nx = n & 0xff; if(nc * 5 % 8 >= 3){ n >>= nc * 5 % 8 - 3; ans += String.fromCharCode(n & 0xff); } nc++; if(nc >= 8){ nc = 0; } } return ans; }