【发布时间】:2016-08-16 20:09:38
【问题描述】:
我有一个 udp 套接字,它接收到不同长度的数据报。 数据报的第一个指定它将接收什么类型的数据,例如 64-means bool false、65-means bool true、66-means sint、67-means int 等等。由于大多数数据类型都知道长度,但是当涉及到字符串和 wstring 时,第一个字节表示 85 表示字符串,接下来的 2 个字节表示字符串长度,然后是实际字符串。对于 wstring 85,接下来的 2 个字节表示 wstring 长度,然后是实际 wstring。
为了解析上述类型的 wstring 格式 b'U\x00\x07\x00C\x00o\x00u\x00p\x00o\x00n\x001' 我使用了以下代码
data = str(rawdata[3:]).split("\\x00")
data = "".join(data[1:])
data = "".join(data[:-1])
这是正确的还是其他简单的方法?
当我收到数据报时,我也需要发送数据报。但我不知道如何创建数据报,因为 socket.sendto 需要bytes。如果我尝试将字符串转换为utf-16 格式,它将转换为 wstring。如果是这样,我将如何将其余信息添加到bytes
从上面的数据报信息U-85是wstring,\x00\x07-wstring数据的7个长度,\x00C\x00o\x00u\x00p\x00o\x00n\x001-是实际的字符串Coupon1
【问题讨论】:
标签: python string sockets wstring