您当前的位置:首页 > 互联网教程

前端js框架如何将字符串转为二进制

发布时间:2025-05-24 06:35:57    发布人:远客网络

前端js框架如何将字符串转为二进制

一、前端js框架如何将字符串转为二进制

1、JavaScript提供原生方式实现字符串转二进制,方法如下:

2、定义一个函数,接收字符串作为参数,返回其对应的二进制字符串。遍历输入字符串中的每个字符,首先将字符转换为 Unicode编码,然后将该编码转换为二进制形式。若二进制表示不足8位,则在左侧补0至满8位,最后将每个字符的二进制表示合并成一个完整的二进制字符串。

3、 for(let i= 0; i< str.length; i++){

4、 binaryStr+= str.charCodeAt(i).toString(2).padStart(8,'0');

5、let binary= stringToBinary('Hello World');

6、执行上述代码,将输出'01001000011001010110110001101100011011110010000001010111011011110111001001101100011001010010000001100101011011010111001001101111011001010010110000100000011110010110110001100101001000000110010001101111011001010010000001100001011011000110100101101110011011110010000001101110011001010110111001100101'。

7、以上代码展示了如何利用JavaScript将字符串转换为二进制字符串,实现方式简单高效。

二、TS/JS 使用pako.js 压缩字符串和二进制

1、因为项目需要压缩字符串和二进制,找到了pako这个库:

2、

3、

4、

5、参考 Javascript简单实现Gzip压缩字符串基于pako.js

6、因为字符串需要与后端通讯,所以使用了bota/atob进行base64编码。

7、关于字符串与二进制处理,可以参考 jsmpeg系列一基础知识字符处理 ArrayBuffer TypedArray,其中提到了ArrayBuffer与字符串的互相转换。

8、 ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的。假定字符串采用UTF-16编码(JavaScript的内部编码方式),可以自己编写转换函数。

9、但是,ab2str这种写法,在实际使用中,如果buf过大,会有 Maximum call stack size exceeded堆栈溢出。

10、可以参考 javascript- js数组转字符串-在字符串和ArrayBuffers之间转换,改为for的写法:

三、js中的位运算

在了解位运算之前,必须先了解一下什么是原码,反码和补码,以及二进制与十进制的转换.

一个数在计算机中是以二进制的形式存在的,其中第一位存放符号,正数为0,负数为1.原码就是用第一位存放符号的二进制数值.例如2的原码为00000010,-2的原码为10000010

正数的反码是它本身,负数的反码是在其原码的基础上,符号位不变,其余各位取反.

可见如果一个反码表示的是负数,并不能直观的看出它的数值,通常要将其转换成原码再计算

正数的补码是它本身,负数的补码是在其原码基础上,符号位不变,其余各位取反,最后+1.(即负数的补码为在其反码的基础上+1)

可见对于负数,补码的表示方式也是让人无法直观的看出其数值的,通常也需要转换成原码再计算.

正整数的十进制转二进制的方法为将一个十进制数除以2,得到的商再除以2,以此类推知道商为1或0时为止,倒序取得除得的余数,即为转换所得的二进制数.

负整数的十进制转二进制,先将该负整数对应的正整数转为二进制,然后对其取反再+1.即补码的形式

十进制小数转二进制的方法为"乘2取整",对十进制的小数部分乘2,得到的整数部分即是相应的二进制码数,然后继续对得到的小数部分乘2,如此不断重复,直到小数部分为0或达到精度要求为止.顺序取得每次的整数部分,即是该十进制小数的二进制表示.

将运算数以二进制表示,对应位都为1,则结果为1,否则为0.

奇数的二进制码的最后一位数肯定是1,而1只有最后一位为1,按位与运算后,结果肯定只有最后一位数是1.而偶数的二进制表示的最后一位数是0,和1进行按位与运算,结果的所有位都是0.

将运算数以二进制表示,对应位有一个为1,则结果为1,否则为0.

其实浮点数是不支持位运算的,所以会先把小数位丢弃,然后以整数进行位运算,而任何数与0进行按位或操作,结果都是它本身,就好像是对浮点数向下求整.

将运算数以二进制表示,对应位相同为0,相异为1.

异或满足交换律和结合律,数字与它本身进行异或操作,得到0;数字与0进行异或操作,得到它本身.

将操作数转换为二进制数,然后按位求反.

浮点数是不支持位运算的,所以会先直接去除小数部分,转成整数再进行位运算,就好像是对浮点数向下求整.

~~可以进行类型转换,位运算会默认将非数字类型转换成数字类型再进行运算(转换结果为整数直接去除小数部分)

移位运算符将操作数转换成二进制,然后向左或向右移动,超过的位丢弃,空出的位补0.

任何小数把它>> 0可以取整

其默认将非数字类型的转换为数字类型再做运算的性质与~~,| 0一样