0

这是上一个问题的延续。我收到了更多的信件,但我对遵循这个建议有点困惑。

我的意图是获取几个不同长度的字节数组,并通过 UDP 将它们发送到另一台机器上的进程。UDP 我可以做,但是发送字节数组让我很困扰,因为我不仅必须将它们转换成 sendto 可以接受的东西,而且我还必须将几个字节数组组合在一起作为一个对象发送。

对于这个问题,有人建议我使用 struct.pack 和 struct.unpack,但我不确定如何使用这些函数。给我的例子并没有像我预期的那样工作,在线搜索也没有多大帮助。此分配要求将多个字节数组作为一个对象发送,这使事情变得更加复杂,因为我不明白如何将多个字节数组打包到一个对象中,并且仍然能够通过 UDP 发送它并在收到后独立访问每个部分. 谁能提供帮助以了解 struct.pack 和 struct.unpack 如何帮助应对这些挑战?

我还偶然发现了另一个概念,编码和解码字符串和字节。我仍在测试它,它似乎很有希望解决我的问题,但我仍然不确定它是否能够满足我的需求。如果有人也可以帮助阐明这一点,那么我将非常感激。

作为记录,我被告知不要在我的解决方案中使用列表或泡菜。

编辑:这是我一直在尝试进行编码和解码的测试代码。我部分来自另一个 SO question,所以我不是 100% 了解正在发生的事情。这种东西能满足我的需要吗?

import socket
import struct
import sys

newbyte = bytearray(4)
mewbyte = bytearray(2)
oewbyte = bytearray(1)

newbyte = sys.argv[1]

stringbyte = newbyte.decode("utf-8")

print "newbyte", newbyte
print "stringbyte", stringbyte

ideabyte = stringbyte.encode("utf-8")

print "ideabyte", ideabyte

编辑:为了更完整,这是我看到的 struct.pack 示例,这给我带来了麻烦。看起来很简单,但似乎需要一些不同的东西来处理字节数组。

   >> import struct
   >> var = 1000       # an integer variable
   >> byte_int = struct.pack('<I', var)
4

0 回答 0