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 6
wil weergeven als 00000110
in 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 string0
neemt de variabele op argumentpositie 0:
voegt opmaakopties toe voor deze variabele (anders zou het decimaal6
vertegenwoordigen)08
maakt het getal op in acht cijfers met een nulpunt aan de linkerkantb
converteert 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.