Python将短整型插入字节列表中

2 投票
4 回答
2959 浏览
提问于 2025-04-15 17:44

我有一串字节,内容如下:

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'

撰写回答