在Python中,将32位有符号长字符转换为7位整数的最佳方式是什么,以便通过Firmata/serial link进行传输?转换成8位不是问题,只是(long_val).to_bytes(4, 'little')
。最后的顺序应该是这样的:
No 1, bits 0-6
No 2, bits 7-13
No 3, bits 14-20
No 4, bits 21-27
No 5, bits 28-32
将7位整数的5项序列向后转换为32位有符号长序列也非常有用
s = bin(pos)[2:].zfill(32)
cmd = bytearray([acc.ACCELSTEPPER_TO, dev_no,
int(s[28:32], 2), int(s[21:28], 2), int(s[14:21], 2),
int(s[7:14], 2), int(s[0:7], 2)])
brd.send_sysex(acc.ACCELSTEPPER_DATA, cmd)
不幸的是,我的方法产生了错误的结果,所以我想完全抛弃它们,从头开始。 提前感谢您的建议
它本身并不是7位,但听起来像是base64 coding的工作。如果您只需要通过7位通道传输数据,那么base64应该可以正常工作。当然,您的数据流将稍长一些,即6字节而不是5字节
下面是如何用Python编写它:
如果您需要超过32位的数字,只需更改第5行中的
4
只需一次转换7位:
相关问题 更多 >
编程相关推荐