You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python UDP客户端发送十六进制值显示异常问题求助

问题解决:UDP客户端发送正确的十六进制字节值

你的问题根源在于字符串编码转换:
当你用"\xCA\xFE"定义Unicode字符串,再调用encode("utf-8")时,Python会将U+00CA(É)和U+00FE(þ)这两个Unicode字符按照UTF-8规则编码为多字节序列C3 8A和C3 BE,这就是终端显示异常的原因。

要发送原始的单字节十六进制值,直接构造bytes对象即可,无需经过字符串编码步骤,修改后的代码如下:

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)

    # 直接构造字节串,\xCA和\xFE会被解析为单字节十六进制值
    data = b"\xCA\xFE"

    # 无需再调用encode,直接发送bytes对象
    socket_client.sendto(data, addr)

补充方案:使用bytes.fromhex()

如果需要发送较长的十六进制序列,用bytes.fromhex()会更直观,比如:

# 空格分隔的十六进制字符串,会被解析为对应的字节
data = bytes.fromhex("CA FE")

这样修改后,Hercules终端就能正确显示0xCA和0xFE了。

内容的提问来源于stack exchange,提问作者AIED

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:01:04