Python:打包多字节数组

时间:2013-10-28 22:54:34

标签: python struct bytearray

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

我的目的是获取不同长度的多个字节数组,并通过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)

0 个答案:

没有答案