//stack 构造函数
class Stack {items = [];
constructor() {}
// 元素入栈,返回栈的大小
push(el) {return this.items.push(el);
}
// 元素出栈,返回出栈元素
pop() {return this.items.pop();
}
// 获取栈的大小
size() {return this.items.length;}
// 判断栈是否为空
isEmpty() {return this.items.length === 0;}
// 清空栈
clear() {this.items = [];
}
}
/***
* @description 十进制转化为 N 进制函数
* @param {Number} metadata 被转化的数值
* @param {Number} n 指定被转化的进制
* @returns {string}
*/
function binaryConversion(metadata, n) {
// 初始化一个栈对象
let stack = new Stack();
let remainder = 0;
let res = "";
while(Math.floor(metadata / n) !== 0) {
// 计算余数
// debugger;
remainder = metadata % n;
switch(remainder) {
case 10:
remainder = "A";
break;
case 11:
remainder = "B";
break;
case 12:
remainder = "C";
break;
case 13:
remainder = "D";
break;
case 14:
remainder = "E";
break;
case 14:
remainder = "F";
break;
}
// 余数入栈
stack.push(remainder);
//metadata 重新赋值
metadata = Math.floor(metadata / n);
}
// 最后一次计算余数没有入栈,这里需要加一次入栈操作
remainder = metadata % n;
stack.push(remainder);
// 输出最后结果
while(!stack.isEmpty()) {res += stack.pop();
}
return res;
}