在python中转换为二进制补码

问题描述

我有一个运动控制器,需要获取4个字节的数据作为设定点位置。

C中的格式为int32_t,它是32位2的补码。主要问题是用前导零格式化数字。

我发现此解决方案适用于正数:

binary = '{:032b}'.format(n)
bytes = [chr(int(binary[i*8:(i*8)+8],2)) for i in range(4)]

然后,我可以通过USB串行将这4个字节发送到运动控制器。但是,在这种情况下,负数存在很大的问题。我不确定是否有一种简单的方法可以将数字转换为32位2的补码,然后拆分字节以通过串行发送。 Python是一种高级语言,因此很遗憾,它不能很好地处理int32_t和二进制等基本数据类型。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)