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

如何通过Python Socket模块向PCB发送有符号整数?

解决方案:发送二进制字节而非ASCII字符串

你当前用socket.send(b'01')发送的是字符0和1的ASCII编码(字节值0x30和0x31),这就是PCB解析出错误数值的原因。要发送目标二进制字节10000000(0x80)和10000001(0x81),需要直接传递对应二进制字节对象,而非字符串。

有两种常用实现方式:

方法1:直接构造字节对象

如果明确知道要发送的十六进制字节值,可以直接用bytes()构造:

import socket

# 假设已建立并连接好socket对象s
target_bytes = bytes([0x80, 0x81])
s.send(target_bytes)

方法2:用struct模块打包整数

如果需要从有符号整数转换为对应字节(比如0x80对应8位有符号整数-128,0x81对应-127),推荐用struct模块,它能灵活处理不同位宽的有符号/无符号整数:

import socket
import struct

# 打包两个8位有符号整数:-128和-127,对应目标字节
packed_data = struct.pack('bb', -128, -127)
# 发送打包后的字节流
s.send(packed_data)

struct格式符说明

  • b:表示8位有符号整数(对应C语言的char)
  • B:8位无符号整数
  • h:16位有符号整数
  • H:16位无符号整数
  • 若需调整字节序(大端/小端),可在格式符前加前缀,比如>bb表示大端字节序,<bb表示小端,根据PCB的解析要求选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:18:16