JS中的进制转换以及作用


Posted in Javascript onJune 26, 2016

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方法可以实现一个进制转化的工具:

运行下面代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script language="javascript">
function test()
{
var num=document.getElementById("in").value;
var type=document.getElementById("title");
var tynum,to;
for(var i=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>
<select name="title" id="title" style="width:152px;">
<option value="1">十进制转二进制</option>
<option value="2">十进制转八进制</option>
<option value="3">十进制转十六进制</option>
<option value="4">二进制转十进制</option>
<option value="5">八进制转十进制</option>
<option value="6">十六进制转十进制</option>
<option value="7">二进制转八进制</option>
<option value="8">八进制转二进制</option>
<option value="9">二进制转十六进制</option>
<option value="10">十六进制转二进制</option>
<option value="11">八进制转十六进制</option>
<option value="12">十六进制转八进制</option>
</select><br />
<input type="text" id="in" /><br>
<input type="text" id="out" /><br/>
<input type="button" value="change" onclick="test()" />
<font color="#FF0000" style="font-size:12px;">*注:存在非法字符时,我们只截断有效字符进行转换</font>
</body>
</html>

简单加密解密

把字符串转化成unicode, 然后再把unicode转成不同的进制 , 实现代码加密处理:

运行下面代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
</head>
<body>
<script>
function en(code, h){
//简单的jS加密解密<br>//code为对应的字符串,h为(2,8,10,16)就是要转成的几进制<br>function en(code, h) {
var monyer = new Array();var i;
for(i=0;i<code.length;i++)
monyer+=code.charCodeAt(i).toString(h)+"_";//就是把字符串转成ascll码,然后再转成你想的几进制
return monyer;
};
function de(code, h) {
var i,s="",code = code.split("_");
for(i=0;i<code.length;i++) {
s += String.fromCharCode(parseInt(code[i],h));
};
return s
};
en("1哇哈哈",8) //=> "61_52307_52310_52310_"
de("61_52307_52310_52310_",8) //=> "1哇哈哈
</script>
</body>
</html>

零宽字符

利用零宽字符的零宽度, 我们把所有的字符串转化成二进制, 然后利用零宽字符进行表示, 那么生成的字符串长度就会为0, 主要反编译即可还原,

运行下面代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
</head>
<body>
<script>
function en(str) {
var rep = {
'00': '\u200b',
'01': '\u200c',
'10': '\u200d',
'11': '\uFEFF'
};
str = str.replace(/[^\x00-\xff]/g, function (a) { // 转码 Latin-1 编码以外的字符。
return escape(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;
return a.replace(/../g, function (a) {
return rep[a];
});
});
return str;
}
;
function de(str) {
return unescape(str.replace(/.{4}/g, function (a) {
var rep = {"\u200b": "00", "\u200c": "01", "\u200d": "10", "\uFEFF": "11"};
return String.fromCharCode(parseInt(a.replace(/./g, function (a) {
return rep[a]
}), 2)).replace(/\\/g,"%")
}))
}
var str = en("1哇哈哈");
console.log(str.length);
console.log(de(str));
</script>
</body>
</html>

以上所述是小编给大家介绍的JS中的进制转换以及作用的全部叙述,希望对大家有所帮助,如果大家想了解更多内容,敬请关注三水点靠木网站!

Javascript 相关文章推荐
对联广告js flash激活
Oct 19 Javascript
Bootstrap选项卡学习笔记分享
Feb 13 Javascript
详解vue-router 2.0 常用基础知识点之router-link
May 10 Javascript
微信小程序 http请求的session管理
Jun 07 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
Feb 26 Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
Vue引入Stylus知识点总结
Jan 16 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 Javascript
原生js中运算符及流程控制示例详解
Jan 05 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 #Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 #Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 #Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 #Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 #Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 #Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 #Javascript
You might like
使用php验证复选框有效性的示例
2013/11/13 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
详解python中的json和字典dict
2018/06/22 Python
Python中的Numpy矩阵操作
2018/08/12 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
校三好学生主要事迹
2014/01/11 职场文书
撤诉书怎么写
2015/05/19 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电