|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在上一讲我们系统的实现十进制转成二进制的算法。
聪明的鱼油,一定发现了只要稍微改一点东西,就可以让十进制转成任意进制。
核心:
- while (decNumber > 0){
- rem = Math.floor(decNumber % 2);
- remStack.push(rem);
- decNumber = Math.floor(decNumber / 2);
- }
复制代码
只要让decNumber和其他进制的基准数字进行整除即可。
在十进制转成二进制时,余数是0或者1;
在十进制转成八进制时,余数是0或者7之间的数;
在十进制转成十六进制时,余数是0到9之间的数加上A、B、C、D、E、F。
因此需要对栈中的数字做个转化才可以。
就拿十六进制来说:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="keywords" content="小甲鱼,Web开发,HTML5,CSS3,Web编程教学">
- <meta name="description" content="《零基础入门学习Web开发》案例演示">
- <meta name="author" content="鱼C工作室">
- <title>鱼C-数据结构与算法(JavaScript)</title>
- <script src="js/stack.js"></script>
- </head>
- <body>
- <p>输入十进制数字为:<span id="decimal"></span>等价于十六进制:<span id="hexadecimal"></span></p>
- <script>
- let decimal = prompt("请输入一个十进制数字");
- document.getElementById("decimal").innerHTML = decimal;
- function decimalToHexadecimal(decNumber){
- var remStack = new Stack(),
- rem,
- baseString = '',
- digits = '0123456789ABCDEF';
- while (decNumber > 0){
- rem = Math.floor(decNumber % 16);
- remStack.push(rem);
- decNumber = Math.floor(decNumber / 16);
- }
- while (!remStack.isEmpty()){
- baseString += digits[remStack.pop()];
- }
- return baseString;
- }
- let hex = decimalToHexadecimal(decimal);
- document.getElementById("hexadecimal").innerHTML = hex;
- </script>
- </body>
- </html>
复制代码
其实decimalToHexadecimal()再指定一个进制类型base,就能封装一个十进制任意转换的方法:
- function decimalToHexadecimal(decNumber,base){
- var remStack = new Stack(),
- rem,
- baseString = '',
- digits = '0123456789ABCDEF';
- while (decNumber > 0){
- rem = Math.floor(decNumber % base);
- remStack.push(rem);
- decNumber = Math.floor(decNumber / base);
- }
- while (!remStack.isEmpty()){
- baseString += digits[remStack.pop()];
- }
- return baseString;
- }
- let hex = decimalToHexadecimal(decimal,16);
- document.getElementById("hexadecimal").innerHTML = hex;
复制代码
源码:
Archive.zip
(1.17 KB, 下载次数: 1, 售价: 11 鱼币)
如果有收获,别忘了评分 :
这位鱼油,如果喜欢本系列学习笔记,请订阅 专辑☞( 传送门)( 不喜欢更要订阅 )
|
|