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

Python 中是否有任何模块或函数可以用来将十进制数转换为它的二进制等价物? 我能够使用 int (’[ two _ value ]’,2)将二进制转换为十进制,那么有什么方法可以不用自己编写代码就能实现相反的操作呢?

611632 次浏览

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

>>> bin(10)
'0b1010'
>>> 0b1010
10
"{0:#b}".format(my_int)

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

def decToBin(n):
if n==0: return ''
else:
return decToBin(n/2) + str(n%2)
def dec_to_bin(x):
return int(bin(x)[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.
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))

前面没有0b:

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

从 Python 3.6开始,您还可以使用 < em > 格式化字符串文字 或 < em > f-string ,——-PEP:

f"{int_value:b}"

为了完成: 如果你想把定点表示转换成它的二进制等价物,你可以执行以下操作:

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

    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
  2. Convert the fractional part in its binary representation. To achieve this multiply successively by 2.

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

You can read the explanation here.