# 进制转换
实现一个算法,可以把十进制转换成二进制。
function declimaToBinary(num) {
const stack = new Stack();
let rem;
while (num > 0) {
rem = Math.floor(num % 2);
stack.push(rem)
num = Math.floor(num / 2)
}
let binaryString = ''
while (!stack.isEmpty()) {
binaryString += stack.pop().toString()
}
return binaryString
}
console.log(declimaToBinary(10));
console.log(declimaToBinary(5));
console.log(declimaToBinary(100));
实现一个算法,可以把十进制转换成基数为 2-36 的任意进制。
function baseConverter(num, base) {
if (!(base >= 2 && base <= 36)) {
return ''
}
const stack = new Stack()
const digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let rem;
let baseString = '';
while (num > 0) {
rem = Math.floor(num % base)
stack.push(rem);
num = Math.floor(num / base);
}
while (!stack.isEmpty()) {
baseString += digits[stack.pop()]
}
return baseString;
}
console.log(baseConverter(31, 16));
在讲十进制转换为二进制时,余数时 0或1;在转换为八进制时,余数时 0-7;但是在将十进制转换为十六进制时,余数是 0-9 加上 A、B、C、D、E和F(对应10、11、12、13、14、15)。因此,我们需要对栈中的数字做一些转换才行,如上