Массив байтов в Python
Как я могу представить массив байтов (например, в Java с byte[]) в Python? Мне нужно отправить его по сети с gevent.
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
4 ответа:
в Python 3, мы используем
bytes
"объект", также известный какstr
в Python 2.# Python 3 key = bytes([0x13, 0x00, 0x00, 0x00, 0x08, 0x00]) # Python 2 key = ''.join(chr(x) for x in [0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
Я нахожу его более удобным, чтобы использовать
base64
модуль...# Python 3 key = base64.b16decode(b'130000000800') # Python 2 key = base64.b16decode('130000000800')
вы также можете использовать литералы...
# Python 3 key = b'\x13\x08' # Python 2 key = '\x13\x08'
просто использовать
bytearray
(Python 2.6 и более поздние версии), который представляет собой изменяемую последовательность байтов>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00]) >>> key bytearray(b'\x13\x00\x00\x00\x08\x00')
индексирование get и устанавливает отдельные байты
>>> key[0] 19 >>> key[1]=0xff >>> key bytearray(b'\x13\xff\x00\x00\x08\x00')
и если вам это нужно как
str
(илиbytes
в Python 3), это так просто>>> bytes(key) '\x13\xff\x00\x00\x08\x00'
альтернатива, которая также имеет дополнительное преимущество легко регистрировать его выход:
hexs = "13 00 00 00 08 00" logging.debug(hexs) key = bytearray.fromhex(hexs)
позволяет делать простые замены, например:
hexs = "13 00 00 00 08 {:02X}".format(someByte) logging.debug(hexs) key = bytearray.fromhex(hexs)