Python 3 имеет специальный тип для двоичных строк , называемых байтами, в отличие от строк Unicode.Это отличается от Python 2, где это был строковый тип по умолчанию.
Самый простой способ создать его - это struct.pack
с его строками формата .Например, если у вас есть беззнаковое короткое , за которым следует подписанное короткое в вашей структуре, и вы хотите закодировать их в сетевом порядке байтов (он же big endian):
import struct
data = struct.pack('>Hh', 0xAFFE, -5)
Это создает строку байтов b'\xaf\xfe\xff\xfb'
.Вы можете получить доступ к первому байту с данными [0] или перебрать их с помощью for byte in data:
или получить len (данные) и т. Д.
Вы можете записать их в файл (устройства) в двоичном режиме, например:
with open('/dev/myfile', 'wb') as f:
f.write(data)
Или отправить их через сокет UDP:
from socket import socket, AF_INET, SOCK_DGRAM
sock = socket(AF_INET, SOCK_DGRAM)
sock.sendto(data, ('127.0.0.1', 9999))
В структурном модуле Python 3 есть больше примеров .