Yanıtlar:
>>> '{0:08b}'.format(6)
'00000110'
Biçimlendirme dizesinin bölümlerini açıklamak için:
{}
bir değişkeni dizeye yerleştirir0
değişkeni 0 bağımsız değişkeninde alır:
bu değişken için biçimlendirme seçenekleri ekler (aksi takdirde ondalık sayıyı temsil eder 6
)08
sayıyı solda sıfır dolgulu sekiz basamağa formatlarb
sayıyı ikili gösterimine dönüştürürPython 3.6 veya daha yeni bir sürümünü kullanıyorsanız, f-dizeleri de kullanabilirsiniz:
>>> f'{6:08b}'
'00000110'
0
, 0th
argüman anlamına gelir format
. İki nokta üst üste biçimlendirme işleminden sonra, ikincisi 0
8 boşluğa sıfır dolumu anlamına gelir ve b
ikili
format()
fonksiyonu : format(6, '08b')
; işlev bir değer ( {..}
yuvanın ne için geçerli olduğu) ve bir biçimlendirme belirtimi ( :
biçimlendirme dizesinde sonra ne koyarsanız ) alır.
Başka bir fikir:
>>> bin(6)[2:].zfill(8)
'00000110'
Dize enterpolasyonu yoluyla daha kısa yol ( Python 3.6+ ):
>>> f'{6:08b}'
'00000110'
bin(-6)[2:].zfill(8)
okumaları için çalışmaz'0000b110'
Biraz çevirme yöntemi ...
>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'
x
sağa kaydırır ve AND ile aynı anda 1
bir biti (0 veya 1) etkili bir şekilde çıkarır .
eumiro'nun cevabı daha iyi, ancak bunu sadece çeşitlilik için gönderiyorum:
>>> "%08d" % int(bin(6)[2:])
00000110
'%08x' % int(bin(6)[2:], 16)
numpy.binary_repr(num, width=None)
büyü genişliği argümanı varYukarıda bağlantılı belgelerden ilgili örnekler:
>>> np.binary_repr(3, width=4) '0011'
Giriş numarası negatif olduğunda ve genişlik belirtildiğinde ikisinin tamamlayıcısı döndürülür:
>>> np.binary_repr(-3, width=5) '11101'
Going Old School her zaman çalışır
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))
number=number/2
şamandıra verir, böylece number=number//2
daha iyi dikişler, ben de number=number//2
ile number//=2
ve b=b+"0"
yerineb+="0"
En iyi yol biçimi belirlemektir.
format(a, 'b')
dizesinin biçimindeki a'nın ikili değerini döndürür.
İkili bir dizeyi tekrar tamsayıya dönüştürmek için int () işlevini kullanın.
int('110', 2)
ikili dizenin tamsayı değerini döndürür.
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)