首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不使用bin方法的情况下将二进制转换为十进制

如何在不使用bin方法的情况下将二进制转换为十进制
EN

Stack Overflow用户
提问于 2021-11-15 14:12:44
回答 2查看 38关注 0票数 0

每当我运行我的代码时,我都会得到一个TypeError,上面写着“在字符串格式化过程中没有转换所有的参数”,并且我尝试使用str()来处理没有转换的内容,但是我遇到了更多的错误。

下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def decimalToBinary(num):

bits = " "

while(num > 0):
   
    bits = str(num%2) + bits
    num = num//2
    
    return bits

def binaryToDecimal(bits):

    deciNum = 0
    powers = 0

    for i in reversed(bits):
    
        deciNum = 2 **powers** (bits % 10)
        bits /=  10
        powers += 1
    
        return deciNum

#program tester
for i in range(135, 146):
x = decimalToBinary(i)
deciNum = binaryToDecimal(x)
print(str(decimal))+ ' is '+ ' in Binary.'

我在"deciNum =2 ** powers ** (Bit%10)“行上得到了这个TypeError

EN

回答 2

Stack Overflow用户

发布于 2021-11-15 14:46:33

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def binaryToDecimal(b_num: str) -> int:
    d_num = 0
    for i in range(len(b_num)):
        digit = b_num.pop()
        if digit == '1':
            d_num = d_num + 2**i
    return d_num

请注意,b_num是一个字符串,而不是一个整数。所以你需要以这种方式binaryToDecimal('101') (而不是以这种方式binaryToDecimal(101))使用这个函数。

票数 0
EN

Stack Overflow用户

发布于 2021-11-15 14:48:31

要回答帖子的标题并保持类型与您的程序一致:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import math

def binaryToDecimal(bits):

    # Initialize integer for number.
    num = 0

    # For each bit, multiply by power of 2 corresponding to its position.
    #  Then, add that power of 2 to the total counter.
    for i in range(len(bits)):
        num += int(bits[i]) * (2 ** (len(bits)-i-1))

    # Return integer type.
    return str(num)

def decimalToBinary(num):

    # Determine how many bits represent the decimal number.
    num_of_bits = int(math.log(num, 2)) + 1

    bits = ''

    # Shift the number over 1 more place to the right in each iteration.
    #  Then test the sign of the bit with AND.
    for i in reversed(range(num_of_bits)):
        bits += str(int(1&(num>>i)))
    
    return bits


for i in range(135, 146):
    x = decimalToBinary(i)
    deciNum = binaryToDecimal(x)
    print(str(deciNum)+ ' is '+ str(x)+' in Binary.')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69981513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文