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

如何在Python 3.6中将字符串转为字节数组并通过Socket发送?

在Python 3.6中发送字符串形式表示的字节数据(Socket实现)

我懂你的需求啦——你要发送的不是普通文本,而是一串以0xXX格式写在字符串里的字节值,得先把这个字符串转成真正的字节数据,再用Python 3.6的Socket发出去对吧?这就给你一步步讲清楚:

1. 先把字符串形式的十六进制字节转成实际字节对象

首先得处理你的输入字符串,比如假设你的字符串是类似 "0x00,0x01,0xff,0x43,0x8a,0x9b" 这样的逗号分隔格式,我们需要把每个0xXX解析成对应的字节:

# 你的原始字符串(以逗号分隔的0x格式字节值)
byte_str = "0x00,0x01,0xff,0x43,0x8a,0x9b"

# 1. 分割字符串,同时去掉每个元素的多余空格
hex_parts = [part.strip() for part in byte_str.split(',')]
# 2. 把每个0x开头的十六进制字符串转成整数(base=16指定解析为十六进制)
byte_values = [int(hex_part, 16) for hex_part in hex_parts]
# 3. 把整数列表转成可通过Socket发送的字节对象
send_bytes = bytes(byte_values)

如果你的字符串是其他分隔格式(比如空格分隔),只需要把split(',')改成split()就行,灵活调整分割方式就好。

2. 通过Socket发送字节数据

接下来分两种最常用的Socket协议类型来实现,你可以根据实际场景选择:

2.1 TCP Socket 发送(面向连接)

如果需要用TCP协议发送(比如需要确保数据可靠到达),先建立连接再发送:

import socket

# 替换成目标服务器的实际IP和端口
HOST = '127.0.0.1'
PORT = 12345

# 使用with语句自动管理Socket资源,不用手动关闭
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    try:
        # 连接目标服务器
        s.connect((HOST, PORT))
        # 发送处理好的字节数据
        s.sendall(send_bytes)
        print("TCP数据发送成功!")
    except ConnectionRefusedError:
        print("连接失败,请检查服务器是否启动或地址端口是否正确")
    except Exception as e:
        print(f"发送过程中出现错误:{e}")

2.2 UDP Socket 发送(无连接)

如果用UDP协议(比如对实时性要求高,不需要可靠传输),不需要提前建立连接,直接发送即可:

import socket

# 替换成目标服务器的实际IP和端口
HOST = '127.0.0.1'
PORT = 12345

with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
    try:
        # 直接发送字节数据到指定地址
        s.sendto(send_bytes, (HOST, PORT))
        print("UDP数据发送成功!")
    except Exception as e:
        print(f"发送过程中出现错误:{e}")

关键提醒

这里的核心是把字符串形式的十六进制值解析成整数,再转成字节——这和直接用str.encode()转换普通文本字符串完全不同,刚好匹配你说的「字节值以字符串形式存储」的特殊场景,而且完全兼容Python 3.6版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:17:55