Відповіді:
>>> '{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)