2025-01-10 19:35:02 +08:00

41 lines
829 B
JavaScript

/**
* 进制转换
* @param {string|number} value 要转换的值
* @param {string} fromBase 源进制
* @param {string} toBase 目标进制
* @returns {string} 转换结果
*/
function base(value, fromBase, toBase) {
const bases = {
binary: 2,
octal: 8,
decimal: 10,
hex: 16,
};
if (!(fromBase in bases)) {
throw new Error(`不支持的源进制: ${fromBase}`);
}
if (!(toBase in bases)) {
throw new Error(`不支持的目标进制: ${toBase}`);
}
// 先转为十进制
let decimal;
if (fromBase === "decimal") {
decimal = Number(value);
} else {
decimal = parseInt(String(value), bases[fromBase]);
}
// 再转为目标进制
if (toBase === "decimal") {
return String(decimal);
}
return decimal.toString(bases[toBase]);
}
module.exports = {
base,
};