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