在python中将十进制转换为二进制

在python中将十进制转换为二进制,python,binary,decimal,Python,Binary,Decimal,python中是否有任何模块或函数可用于将十进制数转换为等效的二进制数? 我可以使用int(“[binary_value]”,2)将二进制转换为十进制,因此有没有办法在不编写代码的情况下进行反向转换?所有数字都存储在二进制中。如果您想要给定数字的二进制文本表示,请使用bin(i) 我同意@aaronasterling的回答。但是,如果希望将非二进制字符串转换为int,则可以使用规范算法: def decToBin(n): if n==0: return '' else:

python中是否有任何模块或函数可用于将十进制数转换为等效的二进制数?
我可以使用int(“[binary_value]”,2)将二进制转换为十进制,因此有没有办法在不编写代码的情况下进行反向转换?

所有数字都存储在二进制中。如果您想要给定数字的二进制文本表示,请使用
bin(i)


我同意@aaronasterling的回答。但是,如果希望将非二进制字符串转换为int,则可以使用规范算法:

def decToBin(n):
    if n==0: return ''
    else:
        return decToBin(n/2) + str(n%2)

很简单。

您还可以使用numpy模块中的函数

from numpy import binary_repr
也可以处理前导零:

Definition:     binary_repr(num, width=None)
Docstring:
    Return the binary representation of the input number as a string.

    This is equivalent to using base_repr with base 2, but about 25x
    faster.

    For negative numbers, if width is not given, a - sign is added to the
    front. If width is given, the two's complement of the number is
    returned, with respect to that width.

如果前面没有0b:

"{0:b}".format(int)
从Python 3.6开始,您还可以使用,---:


为了完成:如果要将定点表示转换为其二进制等效形式,可以执行以下操作:

  • 获取整数和小数部分

    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
  • 转换二进制表示形式中的小数部分。要实现此目的,请依次乘以2

    fr = a_split[1]
    str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...
    

  • 你可以阅读解释

    int(bin(10),2)
    产生
    10
    int(decToBin(10))
    产生
    101
    int(decToBin(10),2)
    产生5。此外,您的函数使用uuu future uuuu import division或python的
    命中递归限制3@aaron,后一点可以通过切换到
    /
    (截断除法)来解决;前者,通过切换在
    返回中求和的两个字符串的顺序
    。无论如何,递归在这里没有任何意义(
    bin(n)[2://code>——或者如果您被困在一些旧版本的Python上,则使用
    while
    循环会更好!)。这太棒了!它也可以用lambda的方式:
    binary=lambda n:“如果n==0,那么binary(n/2)+str(n%2)
    @AzizAlto我得到了一辆满载着大量
    e-
    的数字的巴士,在递归调用dectobin中也是如此。@Timo lol显然你在使用Python3,只需将
    binary(n/2)
    更改为
    binary(n//2)
    那么您将无法获得总线负载:-)-1-不要返回int。另外,
    dec\u to\u bin(-1)
    给出
    ValueError:int()的无效文本,基数为10:'b1'
    您能解释一下[2:]吗?请尝试
    bin(2)
    。你不会得到“10”。您将获得“0b10”。与
    hex(2)
    ('0x2')相同的可能凹坑。因此,除了前两个字符,您需要所有字符。因此,您需要一个从前两个字符开始的片段。@zero\u cool如果test\u var=“Hello world”那么test\u var[2:]=“llo world”@Wallace:因为二进制和十进制是如何显示数字的选择,而不是数字本身的一部分
    dec_to_bin(0b101)==101,这是毫无意义的,因为您可以应用于101的任何操作都与原始的5没有任何关系-例如,
    dec_to_bin(0b101)+1==102
    。以下是使用前导零的打印格式:
    “{0:08b}”。format(my_int)
    @WaldoBronchart这很酷。你能给我解释一下,有前导零是怎么工作的吗?这是内置的,你得到了0+8或0+16的前导零吗?我得到了以下错误:
    TypeError:non-empty format string传递给object。
    对于我来说,python 3.5.2 TypeError:non-empty format string传递给object.\uuuuu format\uh-现在我得到了,你的意思是:``>>“{0:b}”。format(47)-->'101111'您还可以确定它将以这种方式表示的位数:>>
    “{:0>15b}”。格式(3)
    >>>>'000000000000011'与链接的问题“转换为二进制字符串”不同,我认为这个问题是不同的。我来这里是想把一个整数转换成一个对应的二进制数组(或布尔数组),我认为这是一个明智的答案。@SanjayManohar发现的纯字符串处理算法可以用来做你想做的事情。误导。bin()返回二进制字符串,而不是二进制字符串
    n=int(input('please enter the no. in decimal format: '))
    x=n
    k=[]
    while (n>0):
        a=int(float(n%2))
        k.append(a)
        n=(n-a)/2
    k.append(0)
    string=""
    for j in k[::-1]:
        string=string+str(j)
    print('The binary no. for %d is %s'%(x, string))
    
    "{0:b}".format(int)
    
    f"{int:b}"
    
    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
    fr = a_split[1]
    str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...