JS解析字符串为二进制数 1 2 3 4 5 6 7 let str = 'ABCD' ;let result = null ;for (let i = 0 ; i < str.length; i ++ ) { result += str.charCodeAt(i).toString(2 ); } console .log(result);
二进制转Base64 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 function binaryTobase64 (code ) { let base64Code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ; let res = '' ; if (code.length % 24 === 8 ) { code += '0000' ; res += '==' } if (code.length % 24 === 16 ) { code += '00' ; res += '=' } let encode = '' ; for (let i = 0 ; i < code.length; i += 6 ) { let item = code.slice(i, i + 6 ); encode += base64Code[parseInt (item, 2 )]; } return encode + res; }
字符串转base64 版本比较新的浏览器可以支持:
1 2 3 4 5 let encodedData = window .btoa("this is a example" );console .log(encodedData); let decodeData = window .atob(encodedData);console .log(decodeData);
如果没有btoa及atob函数,需要自己手写实现了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 function base64encode (text ) { let base64Code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; let res = '' ; let i = 0 ; while (i < text.length) { let char1, char2, char3, enc1, enc2, enc3, enc4; char1 = text.charCodeAt(i++); char2 = text.charCodeAt(i++); char3 = text.charCodeAt(i++); enc1 = char1 >> 2 ; if (isNaN (char2)) { enc2 = ((char1 & 3 ) << 4 ) | (0 >> 4 ); enc3 = enc4 = 64 ; } else if (isNaN (char3)) { enc2 = ((char1 & 3 ) << 4 ) | (char2 >> 4 ); enc3 = ((char2 & 15 ) << 2 ) | (0 >> 6 ); enc4 = 64 ; } else { enc2 = ((char1 & 3 ) << 4 ) | (char2 >> 4 ); enc3 = ((char2 & 15 ) << 2 ) | (char3 >> 6 ); enc4 = char3 & 63 ; } res += base64Code.charAt(enc1) + base64Code.charAt(enc2) + base64Code.charAt(enc3) + base64Code.charAt(enc4) } return res; }