var Stack = (function(){
var items = new WeakMap();
//先入后出,后入先出
class Stack{
constructor(){
items.set(this,[]);
}
push(ele){
//入栈
var ls = items.get(this);
ls.push(ele);
}
pop(){
//出栈
var ls = items.get(this);
return ls.pop();
}
size(){
//获取栈的长度
var ls = items.get(this);
return ls.length;
}
print(){
//打印栈
var ls = items.get(this);
return ls.toString();
}
}
return Stack;
})(); /**
* num 需要转化的数字
* base 转化的进制,默认为 2
* */
function devide(num,base){
base = Math.floor(base) || 2;
if(typeof num != "number" || num < 0 || base > 16 || base < 2){
throw new Error("参数错误");
return '';
}
num = Math.floor(num); var code = "0123456789ABCDEF";
var stack = new Stack();
var res = '';
var rem;
while(num > 0){
rem = num % base;
stack.push(rem);
num = Math.floor(num/base);
} while(stack.size() > 0){
res += code[stack.pop()];
} return res;
}
console.log(devide(15,16))

  任意进制转十进制

		function transfrom(num,base){
//任意进制转十进制
var bases = [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F"];
var config = {};
for(var k = 0; k < base; k++){
config[bases[k]] = k;
}
num = String(num);
num = num.toUpperCase();
var count = 0;
var res = 0;
var i;
while(num.length > 0){
i = num[num.length - 1];
i = config[i];
res = res + i * Math.pow(base,count);
num = num.substr(0,num.length-1);
count++;
}
return res;
} console.log(transfrom('ff',16));
console.log(transfrom('11',2));

  

js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制的更多相关文章

  1. js模拟栈

    栈:先入后出,后入先出 链表:先入先出,后入后出 下面使用js实现栈 var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 c ...

  2. js模拟栈---汉诺塔

    var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 class Stack{ constructor(){ items.se ...

  3. python3 第十章 - 如何进行进制转化

    在计算机的世界里,2进制是主流,而在人类的自然世界中,10进制是主流,那么在这之间必然就会存在进制转化的问题.本章我们就来谈谈进制转化,也希望通过本章加深您对前些章所学知识的理解. 原理:先说说关于位 ...

  4. 【风马一族_C】进制转化

    #include "stdio.h" #include "Math.h" #define number 50 //设置数组的长度 int num10; //十进 ...

  5. 编码/解码和进制转化工具hURL

    编码/解码和进制转化工具hURL   在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Li ...

  6. C#-进制转化

    (一)数制 计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径.节省设备等优点,为了便于描述,又常用八.十六进制作为二进制的缩写.一般计数都采用进位计数,其特点是 ...

  7. c语言进制转化

    #include <stdio.h> // 进制转化 int main(void) { ; ; int i3 = 0x32C; printf( printf( printf("十 ...

  8. python数据结构:进制转化探索

    *********************************第一部分*************************************************************** ...

  9. 【Java学习笔记之四】java进制转化

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

随机推荐

  1. python 解释器

    原文 Python 能让程序紧凑, 可读性增强. 用 Python 写的程序通常比同样的 C, C++ 或 Java 程序要短得多, 这是因为以下几个原因: 高级数据结构使你可以在单独的语句中也能表述 ...

  2. 强大的JQuery表单验证插件 FormValidator使用介绍

    jQuery formValidator表单验证插件是客户端表单验证插件. 在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人资料,录入一些常规数据等等.在这之前,页面开发者( ...

  3. es6/ts for in/ for of

    for in 是es6之前就有的循环下标的方式 for of 是typescript的循环对象或者数组中值的方式,但是不能循环普通的对象,需要通过和Object.keys()搭配使用,如果循环普通对象 ...

  4. go install and go captcha

    https://blog.csdn.net/liuhongwei123888/article/details/8512815 [gocaptcha]     http://www.cnblogs.co ...

  5. iOS-原生纯代码约束总结(一)之 AutoresizingMask

    一,概述 iOS有两大自动布局利器:autoresizing 和 autolayout(autolayout是IOS6以后新增).autoresizing是UIView的属性,一直存在,使用也比较简单 ...

  6. [knowledge] 停止等待协议

    再读TCP/IP详解 说到流量控制, 可能便涉及了两方面 1. 停止等待协议. https://baike.baidu.com/item/%E5%81%9C%E6%AD%A2%E7%AD%89%E5% ...

  7. 内部排序->选择排序->树形选择排序

    文字描述 树形选择排序又称锦标赛排序; 比如,在8个运动员中决出前3名至多需要11场比赛, 而不是7+6+5=18场比赛(它的前提是甲胜乙,乙胜丙,则甲必能胜丙) 首先对n个记录的关键字进行两两比较, ...

  8. dbtool部署

    dbtool工具部署 a.附件解压到/home/oracle/dbtool b.执行以下命令chmod 755 /home/oracle/dbtool/*.shecho "alias dbt ...

  9. django--admin组件

    一,激活管理工具(一般建立工程已创建) 1,setting.py 中安装子应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.a ...

  10. vuex的小demo

    效果图: vue的app.vue <template> <div> <p>click {{count}} times,count is {{evenOrOdd}}& ...