这是上一个问题的延续。我得到了更多的信件,但是我对于遵循这个建议有点困惑。
我的目的是获取不同长度的多个字节数组,并通过UDP将它们发送到另一台机器上的进程。我可以做UDP,但是发送字节数组让我感到不安,因为我不仅要将它们转换成sendto会接受的东西,而且还必须将几个字节数组合在一起作为一个对象发送。
对于这个问题,我被建议使用struct.pack和struct.unpack,但我不确定如何使用这些函数。我给出的例子并没有像我预期的那样有效,在线搜索并没有提供太多帮助。这个赋值要求将几个字节数组作为一个对象发送,这使事情变得更加复杂,因为我不理解如何将多个字节数组打包到一个对象中,并且仍然能够通过UDP发送它并在收到后独立访问每个部分。任何人都可以帮助理解struct.pack和struct.unpack如何帮助解决这些挑战吗?
我还偶然发现了另一个编码和解码字符串和字节的概念。我还在测试它,它似乎很有希望作为我的问题的解决方案,但我仍然不确定它是否能够做我需要的。如果有人能帮助对此有所了解,那么我会非常感激。
为了记录,我被告知不要在我的解决方案中使用列表或泡菜。
编辑:这是我一直在尝试进行编码和解码的测试代码。我从另一个SO问题中部分地获取了这个,所以我不是百分之百地发生了所有事情。这种事情会满足我的需求吗?
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)