js中怎么表示一个数是二进制数?(在线等)

JavaScript08

js中怎么表示一个数是二进制数?(在线等),第1张

需要准备的材料分别是:电脑、html编辑器、浏览器。

1、首先,打开html编辑器,新建html文件,例如:index.html。

2、在index.html的<script>标签中,用toString(2)表示二进制数,例如输入js代码:var a = 2019var b = a.toString(2)document.body.innerText = b。

3、浏览器运行index.html页面,此时会打印2019的二进制数。

js中可以把数字型字符串转换成二进制,文件还不支持转换。调用方法:parseInt(num).toString(2)这样就会把传入的num转入2进制。比如:var num=4var binNum = parseInt(num).toString(2)document.write("binNum="+binNum )结果是:100

因为项目需要压缩字符串和二进制,找到了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的写法: