В клиенте есть шестнадцатеричные данные:
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
но когда я хочу использовать переменную и цикл для увеличения последнего числа
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.
\x предназначен для буквальных шестнадцатеричных кодов, он не обрабатывается после форматирования.
Не форматируйте номер, просто создайте символ с этим кодом с помощью функции 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))
Вы неправильно поняли вопрос.