Python int в двоичную строку? - PullRequest
       162

Python int в двоичную строку?

425 голосов
/ 31 марта 2009

Существуют ли какие-либо стандартные методы Python для преобразования Integer (или Long) в двоичную строку в Python?

В Google существует множество функций dec2bin () ... Но я надеялся, что смогу использовать встроенную функцию / библиотеку.

Ответы [ 32 ]

2 голосов
/ 03 апреля 2018

Для вычисления двоичных чисел:

print("Binary is {0:>08b}".format(16))

Для вычисления десятичного числа в гексах :

print("Hexa Decimal is {0:>0x}".format(15))

Рассчитать все двоичные числа до 16 ::

for i in range(17):
   print("{0:>2}: binary is {0:>08b}".format(i))

Для расчета десятичного числа гекса до 17

 for i in range(17):
    print("{0:>2}: Hexa Decimal is {0:>0x}".format(i))
##as 2 digit is enogh for hexa decimal representation of a number
1 голос
/ 07 декабря 2018
>>> format(123, 'b')
'1111011'
1 голос
/ 16 декабря 2016

Если вы готовы отказаться от «чистого» Python, но получить большую огневую мощь, есть пример Sage - здесь :

sage: a = 15
sage: a.binary()
'1111'

Вы заметите, что он возвращается в виде строки, поэтому, чтобы использовать его как число, вам нужно сделать что-то вроде

sage: eval('0b'+b)
15
1 голос
/ 22 июня 2018

вы можете сделать так:

bin(10)[2:]

или:

f = str(bin(10))
c = []
c.append("".join(map(int, f[2:])))
print c
1 голос
/ 29 мая 2018

Я нашел метод, использующий матричную операцию для преобразования десятичного числа в двоичное.

import numpy as np
E_mat = np.tile(E,[1,M])
M_order = pow(2,(M-1-np.array(range(M)))).T
bindata = np.remainder(np.floor(E_mat /M_order).astype(np.int),2)

E - входные десятичные данные, M - двоичные порядки. bindata - это выходные двоичные данные в формате 1 на двоичную матрицу M.

1 голос
/ 27 апреля 2017
try:
    while True:
        p = ""
        a = input()
        while a != 0:
            l = a % 2
            b = a - l
            a = b / 2
            p = str(l) + p
        print(p)
except:
    print ("write 1 number")
0 голосов
/ 07 июня 2019

В качестве предыдущих ответов чаще всего используется формат (), Вот реализация F-строки.

integer = 7
bit_count = 5
print(f'{integer:0{bit_count}b}')

Выход:

00111

Для удобства вот ссылка на документы Python для форматированных строковых литералов: https://docs.python.org/3/reference/lexical_analysis.html#f-strings.

0 голосов
/ 01 мая 2019

Мне кажется Комментарий Мартина Питера заслуживает того, чтобы быть выделенным в качестве ответа:

binary_string = format(value, '0{}b'.format(width))

Мне понятен и универсален.

0 голосов
/ 30 апреля 2019

numpy.binary_repr(num, width=None)

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

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

Дополнение к двум возвращается, когда введенный номер отрицателен, и указана ширина:

>>> np.binary_repr(-3, width=3)
'101'
>>> np.binary_repr(-3, width=5)
'11101'
0 голосов
/ 18 апреля 2019

Это мой ответ, он хорошо работает ..!

def binary(value) :
    binary_value = ''
    while value !=1  :
        binary_value += str(value%2)
        value = value//2
    return '1'+binary_value[::-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...