[python] 파이썬의 바이트 배열

파이썬에서 바이트 배열 (예 : byte []를 사용하는 Java)을 어떻게 나타낼 수 있습니까? gevent를 사용하여 유선으로 보내야합니다.

byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};



답변

Python 3에서는 Python 2 bytes라고도 하는 객체를 사용합니다 str.

# 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\0\0\0\x08\0'

# Python 2
key = '\x13\0\0\0\x08\0'


답변

bytearray가변 바이트 시퀀스를 나타내는 (Python 2.6 이상)을 사용하십시오.

>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> key
bytearray(b'\x13\x00\x00\x00\x08\x00')

인덱싱은 개별 바이트를 가져오고 설정합니다.

>>> key[0]
19
>>> key[1]=0xff
>>> key
bytearray(b'\x13\xff\x00\x00\x08\x00')

str(또는 bytesPython 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)


답변

Dietrich의 대답은 아마도 당신이 설명하고 바이트를 보내는 데 필요한 것일 수 있지만 예를 들어 제공 한 코드와 더 가까운 아날로그는 bytearray유형을 사용하는 것 입니다.

>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>> 


답변