客户端中有一个十六进制数据:
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循环来增加最后一个数字时
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
...
谢谢!
答案 0 :(得分:0)
您可以使用"\x%02x" % i
之类的字符串模式。
答案 1 :(得分:0)
不格式化数字,只需使用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))