十进制数转换为二进制数

>>> 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

标签: none

评论已关闭