Если у вас есть 8-битные числа, порядок байтов не имеет значения, поскольку в каждом из них есть только один байт. Если вы хотите преобразовать каждый символ в целое, вы можете написать:
struct.unpack("11B", "\x83\x08\x04\x04\x60\x02\x00\x81\x15\x01\x01")
или
struct.unpack("!11B", "\x83\x08\x04\x04\x60\x02\x00\x81\x15\x01\x01")
или
map(ord, "\x83\x08\x04\x04\x60\x02\x00\x81\x15\x01\x01")
Это эквивалентно.
Если строка содержит 16-битные или 32-битные целые числа, вы можете написать что-то вроде:
struct.unpack("!IIHB", "\x83\x08\x04\x04\x60\x02\x00\x81\x15\x01\x01")
, который будет декодирован как два 4-байтовых, одно 2-байтовое и одно 1-байтовое целое число без знака. !
(что соответствует старшему порядковому порядку байтов >
) означает, что строка имеет сетевой порядок байтов, поэтому все целые числа, превышающие один байт, могут быть правильно преобразованы в ваш собственный порядок байтов.
РЕДАКТИРОВАТЬ: Если вам нужно получить одиннадцать чисел и обработать их в обратном порядке, вы должны использовать один из указанных выше методов и вызвать reversed
, например: reversed(map(ord, data))
; но это меняет порядок независимо от вашего собственного порядка байтов. Ты не сказал, что на самом деле представляют собой данные, и я не уверен, что здесь важен порядок байтов.