标签: python string python-2.7 hex
我想创建5个十六进制字节长度的字符串,它将通过套接字发送。我希望发送255个数据包,逐渐改变第三个字节。我怎样才能做到这一点? 类似这样的代码:
i=0 while True: a="\x3f\x4f"+hex(i)+"\x0D\x0A" socket.send(a) i=i+1
问题是这段代码在第一个循环中引入了0x0(30 78 30)而不是00.
谢谢
答案 0 :(得分:1)
我觉得你在这里有点困惑。
\x3f是单个字符(与?相同的字符)。
\x3f
?
如果i是63(十六进制3F),则您不想添加单独的字符\\,x,3和对字符串f,您要添加单个字符\x3f。同样,如果它为0(十六进制00),则您不希望将单独的字符\\,x,0添加到字符串中,您希望添加单个字符\x0。
i
\\
x
3
f
0
\x0
这正是chr函数的用途:
chr
返回一个字符串,其ASCII码为整数 i 。例如,chr(97)返回字符串'a' ...
chr(97)
'a'
相比之下,函数hex将:
hex
[c]将整数(任意大小)转换为前缀为“0x”的小写十六进制字符串......
因此,hex(97)返回四个字符串'0x61'。
hex(97)
'0x61'