Convertir décimal en binaire en python [dupliquer]

cette question a déjà une réponse ici:

  • Python int à binaire? 25 réponses

y a-t-il un module ou une fonction en python que je puisse utiliser pour convertir un nombre décimal en son équivalent binaire? Je suis capable de convertir binaire en décimal en utilisant int ('[binary_value]', 2), donc de n'importe quelle façon faire l'inverse sans écrire le code. le faire moi-même?

98
demandé sur Vaibhav Mule 2010-08-20 08:13:12

8 réponses

tous les nombres sont stockés en binaire. si vous voulez une représentation textuelle d'un nombre donné en binaire, utiliser bin(i)

>>> bin(10)
'0b1010'
>>> 0b1010
10
174
répondu aaronasterling 2010-08-20 04:17:10
"{0:#b}".format(my_int)
60
répondu Matt Williamson 2010-08-20 04:23:58

sans le 0B devant:

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

commençant par Python 3.6 vous pouvez aussi utiliser chaîne formatée littérale ou F-string , --- PEP :

f"{int:b}"
39
répondu user136036 2018-02-19 22:36:51
def dec_to_bin(x):
    return int(bin(x)[2:])

c'est aussi simple que ça.

26
répondu schmidmt 2012-08-09 19:08:39

vous pouvez également utiliser une fonction du module numpy

from numpy import binary_repr

qui peut également gérer les zéros de tête:

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.
10
répondu flonk 2013-02-06 19:21:14

je suis d'accord avec la réponse de @aaronasterling. Cependant, si vous voulez une chaîne non-binaire que vous pouvez lancer dans un int, alors vous pouvez utiliser l'algorithme canonique:

def decToBin(n):
    if n==0: return ''
    else:
        return decToBin(n/2) + str(n%2)
6
répondu inspectorG4dget 2010-08-23 21:33:38
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))
3
répondu harry 2013-08-02 14:07:02

pour le bien de l'achèvement: si vous voulez convertir la représentation de point fixe à son équivalent binaire, vous pouvez effectuer les opérations suivantes:

  1. Obtenir le nombre entier et de fractions de part.

    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
  2. convertissez la partie fractionnaire dans sa représentation binaire. Pour obtenir ce multiplier successivement par 2.

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

vous pouvez lire l'explication ici .

1
répondu Kalouste 2013-11-13 16:56:24