- List item
进制转换小工具
通过栈结构实现进制转换,使用node环境可以直接运行代码。
通过node执行js时传入两个参数,一个为要转换进制的数值,一个为要转为几进制(2或者10)
class Stack {
constructor() {
this.items = [];
}
push(ele) {
return this.items.push(ele);
}
pop() {
return this.items.pop();
}
peak() {
return this.items[this.items.length - 1];
}
size() {
return this.items.length;
}
isEmpty() {
return this.items.length == 0;
}
}
//十进制转为二进制
function DtoB(Dnum) {
//创建栈实例
let s = new Stack();
//商
let cousult = Dnum;
//只商不为0,一直除
while (cousult > 0) {
let remainder = cousult % 2;
cousult = Math.floor(cousult / 2);
s.push(remainder);
}
//弹出存储的二进制
let Bnum = ''
while (!s.isEmpty()) {
Bnum += s.pop();
}
return Bnum;
}
//转为10进制
function BtoD(Bnum) {
Bnum = Bnum + '';
let Dnum = 0;
for (let i = 0; i < Bnum.length; i++) {
if (Bnum[i] == 1 || Bnum[i] == 0) {
let pow = Bnum.length - 1 - i;
Dnum = Dnum + Bnum[i] * 2 ** pow;
} else {
console.log('请输入正确的二进制数值');
return;
}
}
return Dnum;
}
//通过node的Global对象中的Process获取传入的参数
//要转换的数字
let number = process.argv[2];
//目标进制
let bs = process.argv[3];
//转换后的值
let Rnum;
if (bs == 2) {
Rnum = DtoB(number);
if (Rnum != undefined) {
console.log(Rnum);
}
} else if (bs == 10) {
Rnum = BtoD(number);
if (Rnum != undefined) {
console.log(Rnum);
}
} else {
console.log('只能转换二进制和十进制哦!');
}
执行方式:
node .\二进制和十进制转换.js 10010 10
node .\二进制和十进制转换.js 8 2