В Ruby я мог бы легко упаковать массив, представляющий некоторую последовательность, в двоичную строку:
# for int
# "S*!" directive means format for 16-bit int, and using native endianess
# 16-bit int, so each digit was represented by two bytes. "\x01\x00" and "\x02\x00"
# here the native endianess is "little endian", so you should
# look at it backwards, "\x01\x00" becomes 0001, and "\x02\x00" becomes 0002
"\x01\x00\x02\x00".unpack("S!*")
# [1, 2]
# for hex
# "H*" means every element in the array is a digit for the hexstream
["037fea0651b358c361de"].pack("H*")
# "\x03\x7F\xEA\x06Q\xB3X\xC3a\xDE"
API doc для pack и unpack .
Я не смог найти единого и эквивалентного способа преобразования последовательности в байты (или наоборот) в python.
Хотя struct
предоставляет методы для упаковки в байтовые объекты, доступная строка формата не имеет опции для hexstream.
РЕДАКТИРОВАТЬ: Что мне действительно нужно, так это универсальность Ruby arr.pack и str.unpack, которая поддерживает множественное форматирование и контроль порядка байтов.