Python如何在偏移处插入字节

  • 本文关键字:插入 字节 Python python
  • 更新时间 :
  • 英文 :


考虑以下代码:

some_bytes = bytes(8)
more_bytes = struct.pack(">I", 2)

如何将更多字节插入偏移量为零的some_bytes?我有一些字节是八个空字节,还有一些字节是0x00000002。我想得到这样的结果:0000000 200000000。我不想更多的字节添加到some_bytes,而是将这些字节插入some_byte的特定偏移中,因为some_byte斯只是用于对齐的空字节。

我在评论中提出问题的原因是所需的行为不清楚:

  • 插入意味着将插入内容之后的现有内容向右移动(这会引发关于大小等的问题(

  • 替换(期望的(简单地是";重写";原始的一部分

您可以使用[Python.Docs]:struct.pack_into(format,buffer,offset,v1,v2,…(:

>>> import struct
>>>
>>>
>>> b = struct.pack(">Q", 0x1234567890ABCDEF)
>>> b
b'x124Vxx90xabxcdxef'
>>>
>>>
>>> def replace_bytes(buf, ofs, fmt, *args):
...     ba = bytearray(buf)
...     struct.pack_into(fmt, ba, ofs, *args)
...     return bytes(ba)
...
>>>
>>> replace_bytes(b, 0, ">I", 2)
b'x00x00x00x02x90xabxcdxef'
>>>
>>> replace_bytes(b, 1, ">IH", 2, 1)
b'x12x00x00x00x02x00x01xef'

最新更新