这是来自lib_robotis
的代码片段,值n
是我们输入的角度(旋转dimexel马达)。在
根据马达内部芯片的结构,我们需要将目标位置的低位(由lo
标识)放入地址0x1e,将目标位置的高位(由hi
标识)赋给地址0x1f
def move_to_encoder(self,n);
n=min(max(n,0),self.settings['max_encoder'])
hi,lo=n/256, n%256
return self.write_address(0x1e, [hi,lo])
Tags:
把位想象成二进制表示法中的“数字”。如果你需要取256的最右边的两位数,你只需写256%100,其中100是10^2。同样地,要取8个最右边的“二进制数字”,也就是位,你必须将这个数字除以2^8,即256。在
首先,你说的是高/低字节,而不是位。在
除以256等于右移8次,所以基本上得到高字节。将余数除以256(通过模运算符“%”)可以有效地提取低位字节,因为根据定义,结果将是<;256。在
n是0<;=n<;256*256范围内的数字。它需要两个字节来表示这个数字,因为一个字节可以编码0到255之间的值。在
hi,lo=n/256, n%256
与
/
是除法运算符,%
是余数运算符,因此上面的代码要求将n
除以256,并将商存储在hi
中,余数存储在lo
中。hi
和{我假设您帖子中的代码是为Python2编写的;它在Python3上无法正常工作。您应该将
n / 256
替换为n // 256
,以使代码可以在所有版本的Python上运行。在FWIW,有各种更好的方法来将一个数字分成高字节和低字节。使用内置的divmod函数:
hi, lo = divmod(n, 256)
相关问题 更多 >
编程相关推荐