我是python的新手,我正在尝试使用第三方库/模块。我现在正在做的是:
s.send(rtp.header_bytes + rtp.payload)
# -> \x80!\x00\x01\x00\x00\x00d\x00\x00\x00\x00Testy
通过tcp套接字发送数据包的头和有效负载。在接收方:
conn, addr = socket_rtp.accept()
data = conn.recv(1024)
将数据传递给构造函数__init__(self, bytes, length)
,然后像这样使用
self.version = (bytes[0] & Packet.V_MASK) >> 6
但似乎它将字节数组解释为字符串?我得到以下例外:
.... line 322, in __init__
self.version = (bytes[0] & Packet.V_MASK) >> 6
TypeError: unsupported operand type(s) for &: 'str' and 'int'
感谢您的帮助。
答案 0 :(得分:1)
要将字符串(bytes
)转换为int,您可以使用ord
(假设您使用的是Python 2.x):
self.version = (bytes[0] & Packet.V_MASK) >> 6
self.version = (struct.unpack('B', bytes[0])[0] & Packet.V_MASK) >> 6
>>> ord('\x80')
128
>>> import struct
>>> struct.unpack('B', '\x80')[0]
128