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

Python中如何将二进制字符串转为可用于SPI传输的二进制整数?

问题描述

我需要通过SPI发送二进制数据,因此定义了二进制字符串常量来代表LS7366R设备的命令与寄存器:

RD = '01'
WR = '10'

MDR0 = '001'
MDR1 = '010'

例如要写入MDR0,我拼接字符串并格式化:

msg = WR + MDR0
msg = int(msg, 2)

msg = [format(msg, '#010b')]
print(msg)
>> ['0b00010001']

现在的问题是msg为字符串类型,无法使用spidev包发送。执行bin(int(msg[0],2))得到的仍是字符串类型!如何将该二进制字符串转为可进行二进制运算的二进制整数,或是能直接被spidev使用的格式?

解决方案

1. 跳过字符串转换,直接使用整数

你完全不需要把整数转成带0b前缀的字符串,spidev支持直接发送整数列表。调整代码如下:

RD = '01'
WR = '10'

MDR0 = '001'
MDR1 = '010'

# 拼接命令字符串并转为整数
msg = WR + MDR0
cmd_int = int(msg, 2)  # 得到整数17,对应二进制0b00010001

# 直接将整数列表传入spidev的发送方法
spi.xfer2([cmd_int])

int(msg, 2)已经把二进制字符串转换为真正的整数类型,该整数可直接参与二进制运算(如移位、与或非操作),同时能被spidev直接识别发送。

2. 从二进制字符串转换为整数

如果已经持有类似'0b00010001'的字符串,直接用int()函数即可完成转换:

binary_str = '0b00010001'
cmd_int = int(binary_str, 2)  # 得到整数17

转换后的整数支持所有二进制运算,也可直接用于spidev发送。

3. 转换为字节类型(可选)

若需要字节形式的数据,可将整数转为字节:

cmd_byte = cmd_int.to_bytes(1, byteorder='big')  # 得到b'\x11'
# 两种发送方式均可
spi.xfer2([ord(cmd_byte)])
# 或者
spi.xfer2(list(cmd_byte))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:02:47