파이썬에서 바이트 배열 (예 : 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
(또는 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)
답변
Dietrich의 대답은 아마도 당신이 설명하고 바이트를 보내는 데 필요한 것일 수 있지만 예를 들어 제공 한 코드와 더 가까운 아날로그는 bytearray
유형을 사용하는 것 입니다.
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>>