Відповіді:
>>> '{0:08b}'.format(6)
'00000110'
Просто для пояснення частин рядка форматування:
{} розміщує змінну в рядок0 приймає змінну в позиції аргументу 0:додає параметри форматування для цієї змінної (інакше вона представлятиме десяткові 6)08 Форматує число до восьми цифр з нульовим написом зліваb перетворює число у його двійкове поданняЯкщо ви використовуєте версію Python 3.6 або вище, ви також можете використовувати f-рядки:
>>> f'{6:08b}'
'00000110'
0означає 0thаргумент до format. Після двокрапки є форматуванням, друге 0означає нульове заповнення до 8 пробілів, а bдля двійкового
format() функцією : format(6, '08b'); функція приймає значення (до якого {..}застосовується слот) і специфікацію форматування (що б ви не додали після :в рядку форматування).
Ще одна ідея:
>>> bin(6)[2:].zfill(8)
'00000110'
Коротший шлях за допомогою рядкової інтерполяції ( Python 3.6+ ):
>>> f'{6:08b}'
'00000110'
bin(-6)[2:].zfill(8)читання як'0000b110'
Трохи подвійний метод ...
>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'
xвправо і AND з ним 1, ефективно витягуючи один біт (0 або 1) за один раз.
Відповідь eumiro є кращою, проте я просто публікую це для різноманітності:
>>> "%08d" % int(bin(6)[2:])
00000110
'%08x' % int(bin(6)[2:], 16)
numpy.binary_repr(num, width=None) має аргумент магічної шириниВідповідні приклади з документації, зв'язаної вище:
>>> np.binary_repr(3, width=4) '0011'Доповнення двох повертається, коли вхідне число від'ємне і вказана ширина:
>>> np.binary_repr(-3, width=5) '11101'
Перехід на стару школу завжди працює
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дає float, тому number=number//2шви краще, також я б замінив number=number//2на number//=2і b=b+"0"зb+="0"
Якщо припустити, що ти хочеш розібрати кількість цифр, які використовуються для представлення змінної, яка не завжди є постійною, хорошим способом буде використання numpy.binary.
може бути корисним, коли ви застосовуєте двійкові до наборів живлення
import numpy as np
np.binary_repr(6, width=8)
Найкращий спосіб - вказати формат.
format(a, 'b')
повертає двійкове значення рядкового формату.
Щоб перетворити бінарний рядок назад у ціле число, використовуйте функцію int ().
int('110', 2)
повертає ціле значення двійкового рядка.
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)