Python-bytes()vs struct.pack()

时间:2014-07-24 21:51:36

标签: python python-3.x

我只是好奇,但自从我学习python以来,我一直在使用bytes()将事物转换为字节。直到最近我才看到struct.pack()。我没有学习如何使用它,因为我认为它基本上与bytes()做了同样的事情。但似乎很多人更喜欢使用struct.pack()。为什么?一个优于另一个的优点是什么?

2 个答案:

答案 0 :(得分:3)

bytes()字面意思是这个名字所暗示的:

  

返回一个新的“bytes”对象,它是一个不可变的序列   0 <= x <0的范围内的整数256

struck.pack()做了一些截然不同的事情:

  

此模块执行Python值和表示为Python字符串的C结构之间的转换

虽然对于某些输入,这些输入可能是等效的,但它们完全没有相同的操作。 struct.pack()本质上是生成一个字节字符串,表示内存中的POD C结构。它对序列化/反序列化数据很有用。

答案 1 :(得分:1)

他们做两件事;将bytes(1234)struct.pack("!H", 1234)进行比较。第一个只提供一个4字节的数字字符串表示;第二个提供一个双字节字符串,其中包含整数的(big-endian)值。