Ответ 1
Чтобы преобразовать строку в последовательность байтов в Python 2 или Python 3, вы используете метод string encode
. Если вы не указали параметр кодирования 'ascii'
, который всегда будет достаточно хорош для числовых цифр.
s = str(n).encode()
- Python 2: http://ideone.com/Y05zVY
- Python 3: http://ideone.com/XqFyOj
В Python 2 str(n)
уже создаются байты; encode
выполнит двойное преобразование, поскольку эта строка неявно преобразуется в Unicode и обратно в байты. Это ненужная работа, но она безвредна и полностью совместима с Python 3.
Выше был ответ на вопрос, который действительно был задан, который должен был создать строку из байтов ASCII. Но поскольку люди продолжают приходить сюда, пытаясь получить ответ на другой вопрос, я тоже отвечу на этот вопрос. Если вы хотите преобразовать
10
в b'10'
, используйте приведенный выше ответ, но если вы хотите преобразовать 10
в b'\x0a\x00\x00\x00'
, продолжайте читать.
Модуль struct
был специально предоставлен для преобразования различных типов и их двоичного представления в виде последовательности байтов. Преобразование из типа в байты выполняется с помощью struct.pack
. Там параметр формата fmt
, который определяет, какое преобразование он должен выполнить. Для 4-байтового целого числа это будет i
для подписанных чисел или i
для неподписанных чисел. Дополнительные возможности см. В таблице символов и см. порядок байтов, размер и таблицу выравнивания для параметров, когда вывод больше одного байта.