本文目录导读:

我来为您介绍不同编程语言中的进制转换方法。
JavaScript 进制转换
// 任意进制转十进制
let binary = parseInt('1010', 2); // 二进制转十进制: 10
let octal = parseInt('12', 8); // 八进制转十进制: 10
let hex = parseInt('A', 16); // 十六进制转十进制: 10
// 十进制转其他进制
let num = 10;
num.toString(2); // '1010' - 二进制
num.toString(8); // '12' - 八进制
num.toString(16); // 'a' - 十六进制
// 任意进制互转
function convertBase(num, fromBase, toBase) {
return parseInt(num, fromBase).toString(toBase);
}
// 示例:二进制转十六进制
convertBase('1010', 2, 16); // 'a'
Python 进制转换
# 十进制转其他进制
num = 10
bin(num) # '0b1010' - 二进制
oct(num) # '0o12' - 八进制
hex(num) # '0xa' - 十六进制
# 去掉前缀
bin(num)[2:] # '1010'
oct(num)[2:] # '12'
hex(num)[2:] # 'a'
# 其他进制转十进制
int('1010', 2) # 二进制转十进制: 10
int('12', 8) # 八进制转十进制: 10
int('A', 16) # 十六进制转十进制: 10
# 任意进制转换函数
def convert_base(num, from_base, to_base):
# 先转十进制,再转目标进制
decimal = int(str(num), from_base)
if to_base == 10:
return str(decimal)
# 处理目标进制转换
digits = "0123456789ABCDEF"
result = ""
while decimal > 0:
result = digits[decimal % to_base] + result
decimal //= to_base
return result if result else "0"
Java 进制转换
public class BaseConverter {
// 十进制转其他进制
public static void decimalToOthers(int num) {
String binary = Integer.toBinaryString(num); // 二进制
String octal = Integer.toOctalString(num); // 八进制
String hex = Integer.toHexString(num); // 十六进制
}
// 其他进制转十进制
public static void othersToDecimal() {
int binary = Integer.parseInt("1010", 2); // 二进制转十进制
int octal = Integer.parseInt("12", 8); // 八进制转十进制
int hex = Integer.parseInt("A", 16); // 十六进制转十进制
}
// 通用进制转换
public static String convertBase(String num, int fromBase, int toBase) {
return Integer.toString(
Integer.parseInt(num, fromBase),
toBase
).toUpperCase();
}
}
PHP 进制转换
// 十进制转其他进制
$num = 10;
decbin($num); // '1010' - 二进制
decoct($num); // '12' - 八进制
dechex($num); // 'a' - 十六进制
// 其他进制转十进制
bindec('1010'); // 二进制转十进制: 10
octdec('12'); // 八进制转十进制: 10
hexdec('A'); // 十六进制转十进制: 10
// 通用转换函数
function convertBase($num, $fromBase, $toBase) {
return base_convert($num, $fromBase, $toBase);
}
// 示例
echo convertBase('1010', 2, 16); // 'a'
C# 进制转换
// 十进制转其他进制
int num = 10;
Convert.ToString(num, 2); // '1010' - 二进制
Convert.ToString(num, 8); // '12' - 八进制
Convert.ToString(num, 16); // 'a' - 十六进制
// 其他进制转十进制
Convert.ToInt32("1010", 2); // 二进制转十进制: 10
Convert.ToInt32("12", 8); // 八进制转十进制: 10
Convert.ToInt32("A", 16); // 十六进制转十进制: 10
通用的手动转换函数
// 完整的手动进制转换(不依赖内置函数)
function manualConvertBase(num, fromBase, toBase) {
const digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
// 任意进制转十进制
function toDecimal(str, base) {
return str.split('').reverse().reduce((acc, digit, index) => {
return acc + digits.indexOf(digit) * Math.pow(base, index);
}, 0);
}
// 十进制转任意进制
function fromDecimal(num, base) {
if (num === 0) return '0';
let result = '';
while (num > 0) {
result = digits[num % base] + result;
num = Math.floor(num / base);
}
return result;
}
const decimal = toDecimal(String(num), fromBase);
return fromDecimal(decimal, toBase);
}
实用技巧
-
常用进制范围:通常处理2、8、10、16进制,但理论上可转换任意进制(2-36)
-
大小写问题:十六进制中,'A'和'a'都表示10,但某些函数区分大小写
-
前缀处理:有些转换结果会带前缀(如0x, 0b),根据需要添加或去除
-
错误处理:转换前验证输入是否在目标进制范围内
需要我针对特定语言或更复杂的转换场景做详细说明吗?