根据python文档,python的socket recv()方法返回一个'byte'类型的数组。
但是,如果打印出这个数组,那么看起来像字节的东西也会出现:
\xd9\x01\x01\xa4\xe9\xcbV6\x15\xed|>g5\xfa\xbd\xe9Q\x19@i\x18\xff\
python字节对象是否有一些内部错误报告?什么是这些字节对象似乎不是返回的实际字节?
更奇怪的例子:
\x00w\xd4\x04;\x9c\x0b}>P]\xa4\xbd\xa5n:9x\xe3>9\xd2/~8\
\x01\x01\x1b ,Y\x00\x00\x00\x00\x00\xf4
\xa0A\n\xd7tB}\xed,\xc0\x00\
答案 0 :(得分:1)
recv
剂量确实返回原始字节。只有在打印时,Python字节才采用ASCII编码,如果值落在ASCII可打印的值内,它将打印为由该8位值表示的ASCII字符。如果不是ASCII可打印的,它将使用\x
转义值并打印十六进制。
请注意,如果您使用的是python 3.5,则可以在上面的字节上调用.hex
并查看十六进制值是什么。这应该确认您获得了预期的值。
您可以随意使用Wireshark或类似信息验证您发送的值是否符合预期,只有在打印时才能看到这一点。