Python将一个短整数插入到字节列表中

时间:2010-01-07 11:36:57

标签: python list

我有一个字节列表如下

pkt_bytes = [ 0x02,0x07, 0xff,0xff ,0x00,0x03]

0xff,0xff位置我想放一个16位短整数

我该怎么做

此致

4 个答案:

答案 0 :(得分:5)

您可以使用struct module将值打包为适当的格式:

>>> pkt_bytes = [0x02, 0x07, 0xff, 0xff, 0x00, 0x03]
>>> myint = 123
>>> pkt_bytes[3:5] = [ord(b) for b in struct.pack("H",myint)]
>>> pkt_bytes
[2, 7, 255, 123, 0, 3]

默认情况下,这将使用本机字节顺序,但您可以使用修饰符覆盖它以格式化字符串。由于您的变量名为pkt_bytes,我猜你想要一个由!表示的网络(大端)字节顺序:

>>> struct.pack("!H",5000)
'\x13\x88'

答案 1 :(得分:0)

尝试:

>>> pkt_bytes.insert(3, 0xaa)

>>> help(pkt_bytes.insert)
Help on built-in function insert:

insert(...)
    L.insert(index, object) -- insert object before index

答案 2 :(得分:0)

以下代码会将0xff的每一次出现替换为0x04,直到列表中不再有0xff为止。

pkt_bytes = [0x02, 0x07, 0xff, 0xff ,0x00, 0x03]
while True:
    try:
        idx = pkt_bytes.index(0xff)
        pkt_bytes[idx] = 0x04
    except ValueError:
        break

答案 3 :(得分:0)

>>> pkt_bytes = [ 0x02,0x07, 0xff,0xff ,0x00,0x03]
>>> pkt_bytes[2:4] = [pkt_bytes[2] << 8 | pkt_bytes[3]]
>>> pkt_bytes
[2, 7, 65535, 0, 3]