十进制数转换为二进制数
>>> bin(10)
'0b1010'
十进制、二进制数转换为十六进制数
>>> hex(28)
'0x1c'
>>> hex(0b11010)
'0x1a'
任意进制转为10进制
>>> int(0b1100100)
100
>>> int('0b11010',2)
26
>>> int('0x1A',16)
26
将十进制转换为二进制的函数代码
def dec2bin(target):
amari = []
# 直到商为0
while target != 0:
amari.append(target % 2) # 余数
target = target // 2 # 商
# 按相反顺序返回列表中的元素
amari.reverse()
return amari
将十进制转换为十六进制的函数代码
def dec2hex(target):
amari = []
# 直到商为0
while target != 0:
amari.append(target % 16) # 余数
target = target // 16 # 商
#用A~F替换余数的10~15
for i in range(len(amari)):
if amari[i] == 10: amari[i] == 'A'
elif amari[i] == 11: amari[i] = 'B'
elif amari[i] == 12: amari[i] = 'C'
elif amari[i] == 13: amari[i] = 'D'
elif amari[i] == 14: amari[i] = 'E'
elif amari[i] == 15: amari[i] = 'F'
#按相反顺序返回列表中的元素
amari.reverse()
return amari
将任意m进制转换为10进制的函数代码
def any2dec(target,m):
target = target.upper() #将参数的字母大写,对应后面的字符表
n = len(target)-1 #设定指数的最大值,len()提取字符串的长度,本例target的类型是字符串
sum = 0 #设定变量,存储10进制的值
#逐一检查target中的字符
for i in range(len(target)): #遍历以下字符表,对应16位进制
if target[i] == 'A': num = 10
elif target[i] == 'B': num = 11
elif target[i] == 'C': num = 12
elif target[i] == 'D': num = 13
elif target[i] == 'E': num = 14
elif target[i] == 'F': num = 15
else: num = int(target[i]) #如果是一般的数字(目前是字符串类型),降其转换为数字赋予num变量
sum += (m ** n) * num # 各位的值和其对应权重乘积的总和
n -= 1
return sum
将10进制小数转换为2进制小数的函数代码
def dec2bin_ex(target):
# 将target分离成整数和小数部分
i = int(target) # 整数部分
f = target - i # 小数部分
# 将正数部分转换为二进制
a = [] # 剩余部分的列表
# 直到商为0
while i != 0:
a.append(i % 2) # 余数
i = i // 2 # 商
# 把元素相反顺序排列
a.reverse()
# 把小数部分转换为二进制
b = [] # 带有正数部分的列表
n = 0 # 重复次数的初始值
while f != 0:
temp = f * 2 # 小数部分×2
b.append(int(temp)) # 整数部分计入数列
f = temp - int(temp) # 减去正数部分,剩余小数部分继续循环
n += 1
if (n >= 10): #循环10次结束
break
# 值转换为二进制
return a,b
评论已关闭