方法名就是 atob 和 btoa ,具体语法如下:
IE8/IE9的polyfill
当下,仍有不少PC项目还需要兼容IE9,所以,我们可以专门针对这些浏览器再引入一段ployfill脚本或者一个JS文件即可。
[if IE] 表示所有IE浏览器,由于IE10+浏览器已经放弃了著名的IE条件注释的支持,Chrome等浏览器本身就不支持这个IE私有语法,因此,很天然的,上面一段script引入只在IE9-浏览器下有效。而我们本来就希望只IE8,IE9浏览器引入ployfill,于是正好完美衔接上。
也就是原生支持atob和btoa方法的浏览器认为就是一段无需关心的HTML注释,不支持atob和btoa的IE9及其以下浏览器则会加载我们的base64-polyfill.js,使浏览器也支持 window.btoa 和 window.atob 这个语法。
开源的 base64.js ,使用很简单,浏览器引入该JS文件,然后Base64编码这样:
解码就调用 decode 方法,如下:
因为项目需要压缩字符串和二进制,找到了pako这个库:https://github.com/nodeca/pako
https://gitee.com/renew_old_romance/pako/tree/master
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pako/index.d.ts
参考 Javascript 简单实现Gzip 压缩字符串 基于pako.js
因为字符串需要与后端通讯,所以使用了bota/atob进行base64编码。
关于字符串与二进制处理,可以参考 jsmpeg系列一 基础知识 字符处理 ArrayBuffer TypedArray ,其中提到了ArrayBuffer与字符串的互相转换。
ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的。假定字符串采用UTF-16编码(JavaScript的内部编码方式),可以自己编写转换函数。
但是,ab2str这种写法,在实际使用中,如果buf过大,会有 Maximum call stack size exceeded 堆栈溢出。
可以参考 javascript - js数组转字符串 - 在字符串和ArrayBuffers之间转换 ,改为for的写法:
public class Trans {public void printNum(int num){
System.out.print(Thread.currentThread())//获取当前运行这个方法的类
for(int i=0i<25i++){
System.out.print(i+" ")
}
System.out.println()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)