Python 在十六进制字符串中插入变量

Python 在十六进制字符串中插入变量,python,string,hex,Python,String,Hex,客户端中有一个十六进制数据: MESSAGE = "\x16\x01\x12\x03\x1b\x14\x30\x23\x80\x00\x03\xe8\x00\x00\x00\x00" s.sendto(MESSAGE, (UDP_IP, UDP_PORT)) 服务器将显示: 16 01 12 03 1b 14 30 23 80 00 03 e8 00 00 00 00 但是当我想使用variable和for循环来增加最后一个数字时 for i in range(times): i

客户端中有一个十六进制数据:

MESSAGE = "\x16\x01\x12\x03\x1b\x14\x30\x23\x80\x00\x03\xe8\x00\x00\x00\x00"
s.sendto(MESSAGE, (UDP_IP, UDP_PORT))
服务器将显示:

16 01 12 03 1b 14 30 23 80 00 03 e8 00 00 00 00
但是当我想使用variable和for循环来增加最后一个数字时

for i in range(times):
     i += 1
     i = format(i, '02x')
MESSAGE = "\x16\x01\x12\x03\x1b\x14\x30\x23\x80\x00\x03\xe8\x00\x00\x00"+i
s.sendto(MESSAGE, (UDP_IP, UDP_PORT))
服务器将显示:

16 01 12 03 1b 14 30 23 80 00 03 e8 00 00 00 30 32
“+i”变为ASCII

那么,我应该如何使服务器显示:

16 01 12 03 1b 14 30 23 80 00 03 e8 00 00 00 01
16 01 12 03 1b 14 30 23 80 00 03 e8 00 00 00 02
16 01 12 03 1b 14 30 23 80 00 03 e8 00 00 00 03
...

谢谢

您可以使用字符串模式,如
“\x%02x”%i

不要格式化数字,只需使用
chr
函数用该代码创建一个字符即可

而不是将
1
添加到循环中的
i
,只需更改循环的范围即可

for i in range(1, times+1):
    i = chr(i)
    MESSAGE = "\x16\x01\x12\x03\x1b\x14\x30\x23\x80\x00\x03\xe8\x00\x00\x00"+i
    s.sendto(MESSAGE, (UDP_IP, UDP_PORT))

您误解了这个问题。
\x
用于文本十六进制代码,格式化后不会进行处理。