python-udp客户端-发送十六进制值



我有一个udp python客户端,它可以将十六进制值发送到udp服务器

这是我的代码:

import socket as socket_library
if __name__ == "__main__":
ipv4_local_host = "192.168.56.1"
server_port = 35970
addr = (ipv4_local_host, server_port)
bufferSize = 4096
# Create a UDP socket at client side
socket_client = socket_library.socket(family=socket_library.AF_INET, 
type=socket_library.SOCK_DGRAM)
#data = "xF1xF2xF3"
#data = "x0Fx01x02x03"
#data = "x1Fx1Ex0DxE3"
data="xCAxFE"
data = data.encode("utf-8")
socket_client.sendto(bytes(data), addr)code here

我正在使用hurculis终端接收udp通信,而终端显示错误的值,我希望在终端中看到的是:0xCA 0XFE十六进制

但是终端显示:{C3}{8A}{C3}{BE}

我想这与编码有关,我如何修复我的代码,以便终端显示正确的值0xCA 0XFE

utf-8编码实际上会将文本字符串中的十六进制代码点转换为多字节编码,其特点是xC3是2字节代码的一个前缀。

如果您想要原始字节,请编写字节字符串而不是文本:在字符串前面加上b,就像data = b"xF1xF2xF3"一样,并且根本不调用.encode(...)方法。

此外,您可以使用bytes.fromhex构造函数节省键入时间:它将接受字符0-9a-fA-F本身,忽略whytespace,并为您构建字节对象,而不需要所有x前缀:

data = bytes.fromhex("F1 F2 F3")

最新更新