Подтвердить что ты не робот

Преобразование целочисленного в двоичный код в python

Чтобы преобразовать целое число в двоичный код, я использовал этот код:

>>> bin(6)  
'0b110'

и когда стереть '0b', я использую это:

>>> bin(6)[2:]  
'110'

Что мне делать, если я хочу показать 6 как 00000110 вместо 110?

4b9b3361

Ответ 1

>>> '{0:08b}'.format(6)
'00000110'

Просто, чтобы объяснить части строки форматирования:

  • {} помещает переменную в строку
  • 0 принимает переменную в позиции аргумента 0
  • : добавляет параметры форматирования для этой переменной (иначе она будет представлять десятичную 6)
  • 08 форматирует число до восьми цифр с нулями слева
  • b преобразует число в двоичное представление

Если вы используете версию Python 3.6 или выше, вы также можете использовать f-строки:

>>> f'{6:08b}'
'00000110'

Ответ 2

Просто еще одна идея:

>>> bin(6)[2:].zfill(8)
'00000110'

Более короткий путь через интерполяцию строк (Python 3. 6+):

>>> f'{6:08b}'
'00000110'

Ответ 3

Немного сложный метод...

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'

Ответ 4

Просто используйте функцию формата

format(6, "08b")

Общий вид

format(<the_integer>, "<0><width_of_string><format_specifier>")

Ответ 5

eumiro ответ лучше, однако я просто размещаю это для разнообразия:

>>> "%08d" % int(bin(6)[2:])
00000110

Ответ 6

.. или если вы не уверены, что он всегда должен быть 8 цифр, вы можете передать его как параметр:

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'

Ответ 7

Going Old School всегда работает

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))

Ответ 8

('0' * 7 + bin(6)[2:])[-8:]

или же

right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side

Ответ 9

Используйте numpy.binary_repr(num, width=None)

Примеры из документации по ссылке выше:

>>> np.binary_repr(3)
'11'
>>> np.binary_repr(-3)
'-11'
>>> np.binary_repr(3, width=4)
'0011'

Дополнение twos возвращается, когда введенное число отрицательно и указана ширина:

>>> np.binary_repr(-3, width=3)
'101'
>>> np.binary_repr(-3, width=5)
'11101'

Ответ 10

numpy.binary_repr(num, width=None) имеет аргумент магической ширины

Соответствующие примеры из документации, указанной выше:

>>> np.binary_repr(3, width=4)
'0011'

Дополнение twos возвращается, когда введенное число отрицательно и указана ширина:

>>> np.binary_repr(-3, width=5)
'11101'