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

Convert decimal to binary in python

本问题已经有最佳答案,请猛点这里访问。

在python中,我是否可以使用任何模块或函数将十进制数转换为其二进制等价物?我可以使用int("[binary_value]",2)将二进制转换为十进制,那么有什么方法不用自己编写代码就可以进行反转呢?


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

1
2
3
4
>>> bin(10)
'0b1010'
>>> 0b1010
10

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


前面没有0B:

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

从python 3.6开始,还可以使用格式化字符串literal或f-string,--pep:

1
f"{int:b}"


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

就这么简单。


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

1
from numpy import binary_repr

也可以处理前导零:

1
2
3
4
5
6
7
8
9
10
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.


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

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


1
2
3
4
5
6
7
8
9
10
11
12
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))


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

  • 得到整数和小数部分。

    1
    2
    3
    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
  • 转换二进制表示中的小数部分。以使其连续乘以2。

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

  • 你可以在这里读到解释。