gpt4 book ai didi

python - 通过参数传递给脚本通过 UDP 或 TCP 套接字发送十六进制值

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:55 25 4
gpt4 key购买 nike

我知道为了使用 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 套接字发送在 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。

最佳答案

在您的代码中,您可以将您的 arg 转换为正确的格式,然后您可以使用 python udp_send.py 0x41 调用它

arg = sys.argv[1]

# intarg = 65 == 0x41
intarg = int(arg, 16)

# now convert to byte string '\x41'
hexstring = struct.pack('B', intarg)

关于python - 通过参数传递给脚本通过 UDP 或 TCP 套接字发送十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com