我知道为了使用 python 通过 UDP 套接字发送数据,必须采用以下格式 "\x41" = A 。
我有一个 python 脚本 udp_send.py,我想发送一个十六进制值来表示服务器端的寄存器值。
我通过 linux 终端 >>python udp_send.py "\x41" 运行我的脚本。我在 python 脚本中使用 argv[1] 读取了变量。我做了一个 len 检查,它是 3 。它忽略 \ 并将 x、4 和 1 分别作为 1 个字节,而我希望 \x41 仅代表 1 个字节。
然后我试图连接 data="\x"+"41" 但它没有用。
"\x" 被 python 解释为转义。我正在尝试找到一种将十六进制值传递到我的脚本并通过 UDP 套接字发送它的方法?
到目前为止,我已经实现了以下目标。通过 UDP socket 发送在 python 脚本中定义的十六进制值。
from socket import *
from sys import *
## Set the socket parameters
host = <ip-define-here>
port = <port-define-here>
buf = 1024
addr = (host,port)
## Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)
## Send messages
data ='\x41'
#data=argv[1] #commented out
if not data:
print "No data"
else:
if(UDPSock.sendto(data,addr)):
print "Sending message ",data
## Close socket
UDPSock.close()
我在服务器端使用了wireshark,看到了十六进制值41。
只是要清楚“41”(由 2 个字节组成)与 python 中的“\x41”(仅一个字节)不同。
我的简单问题是,如何获取一个字符“41”并将其与“\x”连接以形成“\x41”,以便我可以将它分配给我的 python 脚本中的数据变量,以便我可以将它作为十六进制值 41 发送。