d0c*_*tor 73 python byte gevent
我怎样才能在Python中表示一个字节数组(比如带有byte []的Java)?我需要用gevent通过电线发送它.
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
Run Code Online (Sandbox Code Playgroud)
Die*_*Epp 72
在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])
Run Code Online (Sandbox Code Playgroud)
我觉得使用base64
模块更方便......
# Python 3
key = base64.b16decode(b'130000000800')
# Python 2
key = base64.b16decode('130000000800')
Run Code Online (Sandbox Code Playgroud)
你也可以使用文字......
# Python 3
key = b'\x13\0\0\0\x08\0'
# Python 2
key = '\x13\0\0\0\x08\0'
Run Code Online (Sandbox Code Playgroud)
Sco*_*ths 30
只需使用bytearray
代表可变字节序列的(Python 2.6及更高版本)
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> key
bytearray(b'\x13\x00\x00\x00\x08\x00')
Run Code Online (Sandbox Code Playgroud)
索引获取并设置各个字节
>>> key[0]
19
>>> key[1]=0xff
>>> key
bytearray(b'\x13\xff\x00\x00\x08\x00')
Run Code Online (Sandbox Code Playgroud)
如果你需要它str
(或bytes
在Python 3中),它就像它一样简单
>>> bytes(key)
'\x13\xff\x00\x00\x08\x00'
Run Code Online (Sandbox Code Playgroud)
另一种选择还具有轻松记录其输出的额外好处:
hexs = "13 00 00 00 08 00"
logging.debug(hexs)
key = bytearray.fromhex(hexs)
Run Code Online (Sandbox Code Playgroud)
允许你做这样简单的替换:
hexs = "13 00 00 00 08 {:02X}".format(someByte)
logging.debug(hexs)
key = bytearray.fromhex(hexs)
Run Code Online (Sandbox Code Playgroud)