根据Python文档,Python的套接字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\
最佳答案
recv
确实返回原始字节。仅在打印时,Python 字节采用 ASCII 编码,如果该值落在 ASCII 可打印的值范围内,它将打印为该 8 位值表示的 ASCII 字符。如果不是 ASCII 可打印的,它会使用 \x
转义该值并打印十六进制。
请注意,如果您使用的是 python 3.5,您可以对上面的字节调用 .hex
并查看十六进制值是什么。这应该确认您获得了预期的值。
请随意使用 Wireshark 或类似工具验证您发送的值是否符合您的预期,只有在打印中您才会看到这一点。
关于python - soc.recv 到底返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39832670/