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
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用,struct.pack但这种方法似乎更容易.理想的情况下应该是这样的DataOutputStream,并DataInputStream在对象的Java里面做这个确切的任务.
Utk*_*glu 10
你总是可以使用bitstring.它能够完成你要求的所有事情以及更多.
>>> import bitstring
>>> stream=bitstring.BitStream()
>>> stream.append("int:32=4")
>>> stream.append("int:16=10")
>>> stream.append("int:8=24")
>>> stream
BitStream('0x00000004000a18')
>>> stream.bytes
'\x00\x00\x00\x04\x00\n\x18'
Run Code Online (Sandbox Code Playgroud)
这是文档的链接.
正如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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16918 次 |
| 最近记录: |