在JavaScript中,进行进制转换是一个常见的面试话题,主要涉及到十进制与其他进制(如二进制、八进制、十六进制)之间的转换。下面我会详细解释并提供相应的代码示例。
1. 十进制转其他进制
- 转二进制:使用
toString(2)
方法 - 转八进制:使用
toString(8)
方法 - 转十六进制:使用
toString(16)
方法
示例代码:
function decimalToOtherBase(decimalNumber, base) {
switch (base) {
case 2:
return decimalNumber.toString(2);
case 8:
return decimalNumber.toString(8);
case 16:
return decimalNumber.toString(16).toUpperCase(); // 转为大写,因为十六进制常以大写表示
default:
throw new Error("Unsupported base. Only bases 2, 8, and 16 are supported.");
}
}
console.log(decimalToOtherBase(10, 2)); // 输出 "1010"
console.log(decimalToOtherBase(10, 8)); // 输出 "12"
console.log(decimalToOtherBase(255, 16)); // 输出 "FF"
2. 其他进制转十进制
- 二进制转十进制:使用
parseInt(string, 2)
- 八进制转十进制:使用
parseInt(string, 8)
- 十六进制转十进制:使用
parseInt(string, 16)
示例代码:
function otherBaseToDecimal(numberString, base) {
return parseInt(numberString, base);
}
console.log(otherBaseToDecimal("1010", 2)); // 输出 10
console.log(otherBaseToDecimal("12", 8)); // 输出 10
console.log(otherBaseToDecimal("FF", 16)); // 输出 255
注意事项:
- 在使用
parseInt()
进行转换时,确保字符串形式的数字前没有无关的字符,比如前导零,这在技术上不会影响结果,但在某些情况下可能引起混淆。 - 对于非标准的进制转换(例如三进制、五进制等),JavaScript没有直接支持的方法,需要自定义逻辑来实现。
以上就是关于JavaScript进制转换的面试题解答及代码示例,希望对您有所帮助。