本文目录导读:

Python 脚本(最推荐)
基础转换
# 十进制转其他进制
num = 255
print(bin(num)) # 转二进制: 0b11111111
print(oct(num)) # 转八进制: 0o377
print(hex(num)) # 转十六进制: 0xff
# 其他进制转十进制
print(int('11111111', 2)) # 二进制转十进制: 255
print(int('377', 8)) # 八进制转十进制: 255
print(int('ff', 16)) # 十六进制转十进制: 255
通用转换函数
def convert_base(number, from_base, to_base):
"""任意进制转换"""
# 先转为十进制
decimal = int(str(number), from_base)
# 十进制转目标进制
if to_base == 10:
return str(decimal)
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ""
if decimal == 0:
return "0"
while decimal > 0:
result = digits[decimal % to_base] + result
decimal //= to_base
return result
# 使用示例
print(convert_base('ff', 16, 2)) # 十六进制ff转二进制: 11111111
print(convert_base('1010', 2, 16)) # 二进制1010转十六进制: A
Bash/Shell 脚本
#!/bin/bash # 十进制转其他进制 num=255 echo "十进制: $num" echo "二进制: $(echo "obase=2; $num" | bc)" echo "八进制: $(echo "obase=8; $num" | bc)" echo "十六进制: $(echo "obase=16; $num" | bc)" # 其他进制转十进制 echo "二进制转十进制: $((2#11111111))" echo "八进制转十进制: $((8#377))" echo "十六进制转十进制: $((16#ff))" # 使用printf printf "十进制255转十六进制: %x\n" 255 printf "十进制255转八进制: %o\n" 255
JavaScript/Node.js 脚本
// Node.js 进制转换
// 基本转换
let num = 255;
console.log(num.toString(2)); // 转二进制: 11111111
console.log(num.toString(8)); // 转八进制: 377
console.log(num.toString(16)); // 转十六进制: ff
// 其他进制转十进制
console.log(parseInt('11111111', 2)); // 255
console.log(parseInt('377', 8)); // 255
console.log(parseInt('ff', 16)); // 255
// 通用转换函数
function convertBase(number, fromBase, toBase) {
// 先解析为十进制
let decimal = parseInt(String(number), fromBase);
// 十进制转目标进制
if (toBase === 10) return String(decimal);
return decimal.toString(toBase).toUpperCase();
}
// 使用示例
console.log(convertBase('ff', 16, 2)); // 11111111
console.log(convertBase('1010', 2, 16)); // A
命令行随手转换(Linux)
# 使用 printf
printf "%d\n" 0xff # 十六进制转十进制: 255
printf "%x\n" 255 # 十进制转十六进制: ff
printf "%o\n" 255 # 十进制转八进制: 377
# 使用 python(最灵活)
python3 -c "print(bin(255))" # 0b11111111
python3 -c "print(hex(255))" # 0xff
python3 -c "print(int('ff', 16))" # 255
# 使用 bc
echo "obase=2; 255" | bc # 11111111
echo "ibase=2; 11111111" | bc # 255
实用脚本:批量转换工具
#!/usr/bin/env python3
# save as: convert.py
import sys
def convert_number(number, from_base, to_base):
try:
# 判断输入是否合法
if from_base == 10:
decimal = int(number)
else:
decimal = int(str(number), from_base)
# 简化:只支持2-36进制
if to_base == 10:
return str(decimal)
elif to_base == 2:
return bin(decimal)[2:]
elif to_base == 8:
return oct(decimal)[2:]
elif to_base == 16:
return hex(decimal)[2:].upper()
else:
# 通用转换
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ""
if decimal == 0:
return "0"
while decimal > 0:
result = digits[decimal % to_base] + result
decimal //= to_base
return result
except ValueError:
return "错误:输入的数字格式不正确"
if __name__ == "__main__":
if len(sys.argv) != 4:
print("用法: python convert.py <数字> <原进制> <目标进制>")
print("示例: python convert.py ff 16 2")
sys.exit(1)
number, from_base, to_base = sys.argv[1], int(sys.argv[2]), int(sys.argv[3])
result = convert_number(number, from_base, to_base)
print(f"{number}({from_base}) = {result}({to_base})")
使用方法:
python convert.py 255 10 2 # 十进制255转二进制 python convert.py ff 16 10 # 十六进制ff转十进制 python convert.py 377 8 2 # 八进制377转二进制
这些脚本应该能满足你的大多数进制转换需求,需要我解释某个特定脚本的细节,或者帮你写一个更针对性的工具吗?