Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在字节列表中插入短整数_Python_List - Fatal编程技术网

Python在字节列表中插入短整数

Python在字节列表中插入短整数,python,list,Python,List,我有一个字节列表,如下所示 pkt_bytes = [ 0x02,0x07, 0xff,0xff ,0x00,0x03] 在位置0xff,0xff中,我想输入一个16位短整数 我该怎么做 关于请尝试: >>> pkt_bytes.insert(3, 0xaa) >>> help(pkt_bytes.insert) Help on built-in function insert: insert(...) L.insert(index, objec

我有一个字节列表,如下所示

pkt_bytes = [ 0x02,0x07, 0xff,0xff ,0x00,0x03]
在位置
0xff,0xff
中,我想输入一个16位短整数

我该怎么做

关于

请尝试:

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

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

insert(...)
    L.insert(index, object) -- insert object before index
可以使用将值打包为适当的格式:

>>> 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
,我猜您需要网络(big-endian)字节顺序,它由
表示

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

下面的代码将用
0x04
替换每次出现的
0xff
,直到列表中不再剩下
0xff

pkt_bytes = [0x02, 0x07, 0xff, 0xff ,0x00, 0x03]
while True:
    try:
        idx = pkt_bytes.index(0xff)
        pkt_bytes[idx] = 0x04
    except ValueError:
        break
pkt_字节=[0x02,0x07,0xff,0xff,0x00,0x03] >>>pkt_字节[2:4]=[pkt_字节[2]>>pkt_字节 [2, 7, 65535, 0, 3]
您想用什么替换这两项吗?请澄清您的问题。您好,我想我需要使用struct pack函数(我需要在数据包中插入除短整数以外的其他数据类型)。我正在尝试构造数据包通过网络发送,这是big-endian格式,谢谢
>>> 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]