Python将短整型插入字节列表中
我有一串字节,内容如下:
pkt_bytes = [ 0x02,0x07, 0xff,0xff ,0x00,0x03]
在位置 0xff,0xff
这个地方,我想放一个16位的短整型数字。
我该怎么做呢?
谢谢!
4 个回答
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
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]
7
你可以使用 struct
模块 来把值打包成合适的格式:
>>> 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'