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 相关文章推荐
JavaScript 序列化对象实现代码
Dec 18 Javascript
基于jquery实现漂亮的动态信息提示效果
Aug 02 Javascript
JS不能跨域借助jquery获取IP地址的方法
Aug 20 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
Apr 07 Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
Sep 15 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
Vue生命周期示例详解
Apr 12 Javascript
Node调用Java的示例代码
Sep 20 Javascript
vue中实现上传文件给后台实例详解
Aug 22 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
php排序算法实例分析
2016/10/17 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Python3访问并下载网页内容的方法
2015/07/28 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
python 内置函数汇总详解
2019/09/16 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
财务部绩效考核方案
2014/05/04 职场文书
岗位职责说明书
2014/05/07 职场文书
大学生求职信范文
2014/05/24 职场文书
投标授权委托书范文
2014/08/02 职场文书
商场父亲节活动方案
2014/08/27 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
请假条应该怎么写?
2019/06/24 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android