Python字节缓冲区对象?
在Python中有没有一种字节缓冲区对象,可以让我添加特定类型的值?(最好能指定字节序)
举个例子:
buf.add_int(4) # should add a 4 byte integer
buf.add_short(10) # should add a 2 byte short
buf.add_byte(24) # should add a byte
我知道我可以使用 struct.pack
,但这个方法似乎不太方便。理想情况下,它应该像Java中的 DataOutputStream
和 DataInputStream
对象一样,能够完成这个具体的任务。
3 个回答
1
只需把 struct.pack
的逻辑放到你自己的类里面就行了。
5
正如Kark Knechtel所建议的,你需要自己创建一个类型来处理这个问题。下面是对bytearray的一个简单扩展:
import struct
class DataStream(bytearray):
def append(self, v, fmt='>B'):
self.extend(struct.pack(fmt, v))
>>> x = DataStream()
>>> x.append(5)
>>> x
bytearray(b'\x05')
>>> x.append(-1, '>i')
>>> x
bytearray(b'\x05\xff\xff\xff\xff')