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, 0thargüman anlamına gelir format. İki nokta üst üste biçimlendirme işleminden sonra, ikincisi 08 boşluğa sıfır dolumu anlamına gelir ve bikili
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'
xsağa kaydırır ve AND ile aynı anda 1bir 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//2daha iyi dikişler, ben de number=number//2ile number//=2ve 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)