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下拉菜单语言选项简单实现
Sep 23 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
你应该了解的JavaScript Array.map()五种用途小结
Nov 14 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
ES6 Symbol在对象中的作用实例分析
Jun 06 Javascript
javascript实现数字时钟效果
Feb 06 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php定界符
2014/06/19 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
php提取微信账单的有效信息
2018/10/01 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
python交互式图形编程实例(二)
2017/11/17 Python
python语言中with as的用法使用详解
2018/02/23 Python
python中while和for的区别总结
2019/06/28 Python
Python imread、newaxis用法详解
2019/11/04 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
金融专业个人求职信
2013/09/22 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
小学生校园广播稿
2014/09/28 职场文书
Elasticsearch 批量操作
2022/04/19 Python