【发布时间】:2021-02-15 04:20:07
【问题描述】:
我需要一个可以执行以下操作的应用程序:
- 读取 UDP 消息,从中获取数据 - 数据是文本的,逗号分隔。
- 根据此值构建新消息
- 向其他目的地发送新的 UDP 消息。
第一次和最后一次我都很好。第二个我有一个挑战:
假设我收到的数据是Year = 2020。 Wireshark 上的消息(第 3 步),我将其视为 2 个字节,值 07 e4
我该怎么做?我尝试了几种方法,但都没有为我提供所需的格式。
代码示例:
data1 = '\xab\xcd\xef\xgh'
...
data, addr = sock.recvfrom (200)
elements = data.decode().split(",")
Date=elements[15].split("/")
Year = int(Date(2))
year = <do something with Year to convert to right format>
newMsg = data1 + year
...
newSock.sendto(newMsg.encode('charmap'), (IP, int(port)))
Python 3.5 版
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/2269827/…
-
看看struct,它为这些类型的消息编写提供了有用的功能,例如
struct.pack('!h', 2020) -
@go2nirvana - 没有。假设整数小于 255。我需要大于该值的值
-
@MrFuppes,如前所述,原始值是文本,逗号分隔,其中包括日期和时间(aa:bb:cc.dd, XX/YY/ZZ) - 我需要提取每个这些值并重建一个包含附加数据的新数据包。此数据存储为字符串
-
@user1977050 没有这样的假设。您可以使用
hex将任何整数转换为十六进制。
标签: python python-3.x format udp