为了通过 Firmata/串行链接传输它们,将 32 位有符号长整数转换为 7 位整数的最佳方法是什么(在 Python 中)?转换成 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)
不幸的是,我的方法产生了错误的结果,所以我想完全放弃它们并从头开始。在此先感谢您的任何建议)。