JS中的进制转换以及作用
js的进制转换,分为2进制,8进制,10进制,16进制之间的相互转换,我们直接利用对象.toString()即可实现:
运行下面代码
//10进制转为16进制 (10).toString(16)//=>"a" //8进制转为16进制 (012).toString(16)//=>"a" //16进制转为10进制 (0x16).toString(10)//=>"22" //16进制转为8进制 (0x16).toString(8)//=>"26" //10进制转为2进制//=> (1111).toString(2)//=>"10001010111" //8进制转为2进制//=> (01111).toString(2)//=>"1001001001" //16进制转为2进制//=> (0x16).toString(2)//=>"10110"
如果要处理2进制到10进制,16进制到10进制,8进制到10进制,需要用了paresInt这个方法:
运行下面代码
//2进制到10进制; parseInt(10,2)//=>2 //2进制到10进制; parseInt(100,2)//=>4 //16进制到10进制 parseInt(12,16)//=>18 //8进制到10进制 parseInt(12,8);//=>10
进制转换
如果要实现进制之间的转换,可以利用parseInt方法,先转化为10进制,然后再利用toString(参数),转化成不同的进制;
利用toString和parseInt方法可以实现一个进制转化的工具:
运行下面代码
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <title>无标题文档</title> </head> <body> <scriptlanguage="javascript"> functiontest() { varnum=document.getElementById("in").value; vartype=document.getElementById("title"); vartynum,to; for(vari=0;i<type.length;i++) { if(type[i].selected) tynum=parseInt(type[i].value); } switch(tynum) { case(1):to=parseInt(num).toString(2);break; case(2):to=parseInt(num).toString(8);break; case(3):to=parseInt(num).toString(16);break; case(4):to=parseInt(num,2);break; case(5):to=parseInt(num,8);break; case(6):to=parseInt(num,16);break; case(7):to=parseInt(num,2).toString(8);break; case(8):to=parseInt(num,8).toString(2);break; case(9):to=parseInt(num,2).toString(16);break; case(10):to=parseInt(num,16).toString(2);break; case(11):to=parseInt(num,8).toString(16);break; case(12):to=parseInt(num,16).toString(8);break; } if(isNaN(to)) to="输入非法字符了哦" document.getElementById("out").value=to; } </script> <selectname="title"id="title"style="width:152px;"> <optionvalue="1">十进制转二进制</option> <optionvalue="2">十进制转八进制</option> <optionvalue="3">十进制转十六进制</option> <optionvalue="4">二进制转十进制</option> <optionvalue="5">八进制转十进制</option> <optionvalue="6">十六进制转十进制</option> <optionvalue="7">二进制转八进制</option> <optionvalue="8">八进制转二进制</option> <optionvalue="9">二进制转十六进制</option> <optionvalue="10">十六进制转二进制</option> <optionvalue="11">八进制转十六进制</option> <optionvalue="12">十六进制转八进制</option> </select><br/> <inputtype="text"id="in"/><br> <inputtype="text"id="out"/><br/> <inputtype="button"value="change"onclick="test()"/> <fontcolor="#FF0000"style="font-size:12px;">*注:存在非法字符时,我们只截断有效字符进行转换</font> </body> </html>
简单加密解密
把字符串转化成unicode,然后再把unicode转成不同的进制,实现代码加密处理:
运行下面代码
<!DOCTYPEhtml> <html> <head> <metacharset="utf-8"/> <title></title> </head> <body> <script> functionen(code,h){ //简单的jS加密解密<br>//code为对应的字符串,h为(2,8,10,16)就是要转成的几进制<br>functionen(code,h){ varmonyer=newArray();vari; for(i=0;i<code.length;i++) monyer+=code.charCodeAt(i).toString(h)+"_";//就是把字符串转成ascll码,然后再转成你想的几进制 returnmonyer; }; functionde(code,h){ vari,s="",code=code.split("_"); for(i=0;i<code.length;i++){ s+=String.fromCharCode(parseInt(code[i],h)); }; returns }; en("1哇哈哈",8)//=>"61_52307_52310_52310_" de("61_52307_52310_52310_",8)//=>"1哇哈哈 </script> </body> </html>
零宽字符
利用零宽字符的零宽度,我们把所有的字符串转化成二进制,然后利用零宽字符进行表示,那么生成的字符串长度就会为0,主要反编译即可还原,
运行下面代码
<!DOCTYPEhtml> <html> <head> <metacharset="utf-8"/> <title></title> </head> <body> <script> functionen(str){ varrep={ '00':'\u200b', '01':'\u200c', '10':'\u200d', '11':'\uFEFF' }; str=str.replace(/[^\x00-\xff]/g,function(a){//转码Latin-1编码以外的字符。 returnescape(a).replace('%','\\'); }); str=str.replace(/[\s\S]/g,function(a){//处理二进制数据并且进行数据替换 a=a.charCodeAt().toString(2); a=a.length<8?Array(9-a.length).join('0')+a:a; returna.replace(/../g,function(a){ returnrep[a]; }); }); returnstr; } ; functionde(str){ returnunescape(str.replace(/.{4}/g,function(a){ varrep={"\u200b":"00","\u200c":"01","\u200d":"10","\uFEFF":"11"}; returnString.fromCharCode(parseInt(a.replace(/./g,function(a){ returnrep[a] }),2)).replace(/\\/g,"%") })) } varstr=en("1哇哈哈"); console.log(str.length); console.log(de(str)); </script> </body> </html>
以上所述是小编给大家介绍的JS中的进制转换以及作用的全部叙述,希望对大家有所帮助,如果大家想了解更多内容,敬请关注毛票票网站!