python - soc.recv 到底返回什么?

标签 python arrays sockets python-3.x byte

根据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/

相关文章:

python - Safari 中未设置 Flask session cookie

python - 从文件中读取的 CSV 分隔符

arrays - 从文件中读取字符串并转换为数组 Julia

arrays - Swift 中数组、集合和字典的区别

c# - 创建新的空白应用程序时,Xamarin Android Visual Studio布局未呈现

python - Python 转换为数组时出现内存错误

python - 如何从 pandas 中的列创建唯一 ID 列表,其中 ID 列表在 Python 中被称为字符串

javascript - 从字符串中取出随机字母

c - I/O、写入本地驱动器上的文件或写入套接字,哪个更快?

c# - 写入文件仅在 "step in" Debug模式下有效?