在Python中将二进制字符串转换为二进制整数
我想通过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)