如何解决为什么python3上的socket.recv返回丢失最后一个字节的值?
所以我有这样的python代码,可以向端口发送和接收UDP数据包
s = socket(AF_INET,SOCK_DGRAM)
UDP_IP = '1.0.0.45'
UDP_PORT = 8100
s.connect((UDP_IP,UDP_PORT))
r = s.send(ethernet_packet + payload)
data = s.recv(1024)
print(data)
数据包已成功发送,在tcpdump
中,我收到的udp数据包是
但是接收到的数据是这样打印的:b'\xff\xff\xff\xff\xff\xff\x00\x01\x00\x00\x00\x08\x80\x04\xc0\x00\x00\x00\x009'
最后一个字节应该是“ x39”,由于某种原因缺少3,有人知道为什么吗?
adv中的Thx
解决方法
这是预期的行为。如果python可以将字节对象中的字节表示为ASCII,则它将。 b'9'只是b'\ x39',但是python倾向于使用ASCII来提高可读性。
>>> b"\x39"
b'9'
string literals的Python文档指示ASCII字符和带十六进制值的字符在字节字符串中有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。