我正在接收STX ETX数据包数据,这是一个示例:
数据已经过URL编码。在编码和发送之前,它是这样的:
URL编码数据与编码和发送之前的字节数据之间的关系就是这个。
0x41 -> A
0xd9 -> %D9
0x33 -> 3
0x48 -> H
0x58 -> X
0x01 -> %01
0x00 -> %00
经过一些研究后我发现这是将unicode代码点转换为十六进制数字和unicode字符名称。除了第一个字节是ascii字符。
在第一个字符A之后,以下四个字节组成一个4字节整数,这是一个UTC时间戳。
如何使用python将URL转换回十六进制和unicode代码点。我查看了unicodedata模块,但似乎无法找到从unicode字符名称到unicode代码点的转换。
非常感谢任何帮助或建议。
答案 0 :(得分:0)
您可以使用urlparse
模块解码该字符串。
import urlparse
data = "/type=stxetx&packet=A%d93HX%01%00&serial=1234&foo=bar"
new_data = dict(urlparse.parse_qsl(data))
assert len(new_data['packet']) == 7
assert new_data['packet'][0] == 'A'
assert ord(new_data['packet'][1]) == 0xd9
参考: