Geheel getal converteren naar binair in python

Om een geheel getal naar een binair getal te converteren, heb ik deze code gebruikt:

>>> bin(6)  
'0b110'

en wanneer de ‘0b’ moet worden gewist, gebruik ik dit:

>>> bin(6)[2:]  
'110'

Wat kan ik doen als ik 6wil weergeven als 00000110in plaats van 110?


Antwoord 1, autoriteit 100%

>>> '{0:08b}'.format(6)
'00000110'

Alleen om de delen van de opmaakreeks uit te leggen:

  • {}plaatst een variabele in een string
  • 0neemt de variabele op argumentpositie 0
  • :voegt opmaakopties toe voor deze variabele (anders zou het decimaal 6vertegenwoordigen)
  • 08maakt het getal op in acht cijfers met een nulpunt aan de linkerkant
  • bconverteert het getal naar zijn binaire representatie

Als je een versie van Python 3.6 of hoger gebruikt, kun je ook f-strings gebruiken:

>>> f'{6:08b}'
'00000110'

Antwoord 2, autoriteit 26%

Nog een idee:

>>> bin(6)[2:].zfill(8)
'00000110'

Kortere manier via stringinterpolatie(Python 3.6+):

>>> f'{6:08b}'
'00000110'

Antwoord 3, autoriteit 6%

Een beetje prutsmethode…

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'

Antwoord 4, autoriteit 4%

Gebruik gewoon de opmaakfunctie

format(6, "08b")

De algemene vorm is

format(<the_integer>, "<0><width_of_string><format_specifier>")

Antwoord 5, autoriteit 2%

eumiro’s antwoord is beter, maar ik plaats dit voor de afwisseling:

>>> "%08d" % int(bin(6)[2:])
00000110

Antwoord 6, autoriteit 2%

numpy.binary_repr(num, width=None)heeft een magisch breedteargument

Relevante voorbeelden uit de documentatie waarnaar hierboven wordt verwezen:

>>> np.binary_repr(3, width=4)
'0011'

Het complement van de twee wordt geretourneerd wanneer het invoergetal negatief is en de breedte is opgegeven:

>>> np.binary_repr(-3, width=5)
'11101'

Antwoord 7

.. of als je niet zeker weet of het altijd 8 cijfers moet zijn, kun je het als parameter doorgeven:

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'

Antwoord 8

Oude school gaan werkt altijd

def intoBinary(number):
binarynumber=""
if (number!=0):
    while (number>=1):
        if (number %2==0):
            binarynumber=binarynumber+"0"
            number=number/2
        else:
            binarynumber=binarynumber+"1"
            number=(number-1)/2
else:
    binarynumber="0"
return "".join(reversed(binarynumber))

Antwoord 9

('0' * 7 + bin(6)[2:])[-8:]

of

right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side

Antwoord 10

Ervan uitgaande dat u het aantal cijfers wilt ontleden dat wordt gebruikt om een variabele weer te geven die niet altijd constant is, is een goede manier om numpy.binary te gebruiken.

kan handig zijn als je binair toepast op vermogenssets

import numpy as np
np.binary_repr(6, width=8)

Antwoord 11

nog een gemakkelijkere manier

my_num = 6
print(f'{my_num:b}')

Antwoord 12

De beste manier is om het formaat te specificeren.

format(a, 'b')

retourneert de binaire waarde van a in tekenreeksformaat.

Om een binaire string terug te converteren naar een geheel getal, gebruik
int() functie.

int('110', 2)

retourneert integer waarde van binaire string.


Antwoord 13

def int_to_bin(num, fill):
    bin_result = ''
    def int_to_binary(number):
        nonlocal bin_result
        if number > 1:
            int_to_binary(number // 2)
        bin_result = bin_result + str(number % 2)
    int_to_binary(num)
    return bin_result.zfill(fill)

Antwoord 14

U kunt alleen gebruiken:

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

Naar mijn mening is dit de gemakkelijkste manier!


Antwoord 15

Het python-pakket Binaire breukenheeft een volledige implementatie van zowel binaire als binaire breuken . U kunt uw bewerking als volgt uitvoeren:

from binary_fractions import Binary
b = Binary(6) # creates a binary fraction string
b.lfill(8) # fills to length 8

Dit pakket heeft vele andere methoden om binaire strings met volledige precisie te manipuleren.

Other episodes