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

时间:2010-08-20 04:13:12

标签: python binary decimal

我可以使用python中的任何模块或函数将十进制数转换为二进制数吗? 我可以使用int('[binary_value]',2)将二进制转换为十进制,所以任何方法都可以在不编写代码的情况下自行完成反转?

8 个答案:

答案 0 :(得分:194)

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

>>> bin(10)
'0b1010'
>>> 0b1010
10

答案 1 :(得分:63)

"{0:#b}".format(my_int)

答案 2 :(得分:45)

没有前面的0b:

"{0:b}".format(int)

从Python 3.6开始,您还可以使用formatted string literal or f-string,--- PEP

f"{int:b}"

答案 3 :(得分:30)

def dec_to_bin(x):
    return int(bin(x)[2:])

就这么简单。

答案 4 :(得分:10)

您还可以使用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.

答案 5 :(得分:7)

我同意@ aaronasterling的回答。但是,如果您想要一个可以转换为int的非二进制字符串,那么您可以使用规范算法:

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

答案 6 :(得分:4)

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

答案 7 :(得分:1)

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

  1. 获取整数和小数部分。

    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
  2. 以二进制表示形式转换小数部分。为了实现这个连续乘以2。

    fr = a_split[1]
    str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...
    
  3. 您可以阅读解释here