Хочу бит перевести в байт формат, таким способом
b = 10
a = b.to_bytes(1, byteorder='big')
print(a)
Но в ответе получаю b'\n' (это эквивалентно 1010 в битах) , вместо ожидаемого b'\x02'.
Как я понял проблема в том, что питон переводит 10 формата int в байты, а мне нужно 10 bit перевести. Так вот, как мне указать, что мой вводимый формат бит(если это возможно). Или есть ли какой другой способ решения нужной мне задачи.
2 ответа 2
Проблема в том, что вы задаёте переменной b значение в десятичной системе, а значит в двоичной системе значение переменной равно 1010, и этому соответствует символ новой строки (в Python представление байтов \xNN заменяется символом, когда есть читаемый символ соответствующий числу). Чтобы задать значение переменной в двоичной системе, необходимо указать перед цифрами 0b. Таким образом:
b = 0b10 # то же самое, что и b = 2
a = b.to_bytes(1, byteorder='big')
print(a) # b'\x02'
-
да уж, все оказалось куда проще.. упустил из виду указатель на двоичное число. Спасибо большое))long-link– long-link2020年05月06日 19:39:20 +00:00Commented 6 мая 2020 в 19:39
такой вариант тоже помог
b = '10'
a = int(b, 2).to_bytes(1, byteorder='big') # указали на то, что число находится в двоичной системе
print(a)
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопрос
bytes([0b10])