在字符串Python的中间插入十六进制值
我想创建5个十六进制字节长度的字符串,通过套接字发送。我希望发送255个数据包,改变第三个字节的增量。我该怎么做? 类似于以下代码:在字符串Python的中间插入十六进制值,python,string,python-2.7,hex,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(307830)而不是00 谢谢我想你在这里有点困惑 \x3f是单个字符(与?相同的字符) 如果i是,比如说63(十六进制3F)
i=0
while True:
a="\x3f\x4f"+hex(i)+"\x0D\x0A"
socket.send(a)
i=i+1
例如,问题是该代码在第一个循环中引入了0x0(307830)而不是00
谢谢我想你在这里有点困惑
\x3f
是单个字符(与?
相同的字符)
如果i
是,比如说63(十六进制3F),您不想在字符串中添加单独的字符\\
、x
、3
和f
,您想添加单个字符\x3f
。同样,如果它是0(十六进制00),您不想在字符串中添加单独的字符\\
,x
,0
,您要添加单个字符\x0
这正是函数的用途: 返回一个字符串,其ASCII码为整数i。例如,
chr(97)
返回字符串'a'
相比之下,该功能将: [c] 将整数(任意大小)转换为前缀为“0x”的小写十六进制字符串
因此,
hex(97)
返回四个字符的字符串'0x61'
非常有效!我走错方向了。谢谢。作为补充说明,您可能需要查看bytearray
。它是一种介于str
和list
小整数之间的混合体。例如,您可以将其构造为bytearray('\x3f\x4f\x00\x0d\x0a')
或bytearray([0x3f,0x4f,0x00,0x0d,0x0a])
,然后执行a[2]=i
而无需转换,还可以执行socket.send(a)
而无需转换。