在Python中将二进制字符串转换为二进制整数

0 投票
1 回答
29 浏览
提问于 2025-04-14 15:20

我想通过SPI发送二进制数据,所以我把代码写成了一些二进制字符串常量,这些字符串代表了SPI设备上的各种命令和寄存器。

RD = '01'
WR = '10'

MDR0 = '001'
MDR1 = '010'

比如说,如果我想写入MDR0,我就把这两个字符串加在一起,并且把它们格式化成固定长度:

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

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

我的问题是,现在msg是一个str类型的数据,而不是int类型,所以不能用spidev包发送。

bin(int(msg[0],2))

上面的代码也导致了字符串数据类型!我该怎么把这个二进制字符串转换成二进制整数,这样我就可以对它进行二进制操作了呢?

1 个回答

1

制作整数位掩码。通过“或”运算来生成红外寄存器的值:

import spidev

RD = 0b01 << 6  # bits 6-7
WR = 0b10 << 6

MDR0 = 0b001 << 3  # bits 3-5
MDR1 = 0b010 << 3

spi = spidev.SpiDev()
spi.open(bus, device)
msg = [WR | MDR0]
spi.xfer(msg)

撰写回答