Python3.4.3声明字节类型不支持%。有没有人知道另一种方式来执行余数模数。
我正在查看来自u3.py的LabJack设备代码,并尝试将代码从Python2更新为Python3.4.3。
def __init__(self, Dac, Value):
self.dac = Dac
self.value = Value
self.cmdBytes = [ 38 + (Dac % 2), Value % 256, Value >> 8 ]
格式正确## d.getFeedback(u3.DAC16(Dac = 0,Value = 0x5566))
Python2允许将字节存储在文本字符串中,但在Python3中它们是它们自己的类型。所以我转换了它们 Python3.4.3使用以下命令生成b' '数据
str.encode(STR(十六进制(32768))
b'0x8000'
不幸的是,我收到了这个错误......
类型错误:在字符串格式化过程中并非所有字符串都被转换
我认为这个错误来自%256不支持Python3.4.3中的字节
类型错误:%:' bytes'不支持的操作数类型和' int'
我不确定为什么%会说它不支持' int'因为它显然是在Python3.4.3
中我真的很感激帮助。谢谢,
答案 0 :(得分:0)
我认为,这意味着其余部分实际上是对数字的操作。字节是没有数字解释的存储。
因此,如果您想将数字转换为“存储空间”,则应使用struct
module:
from struct import pack
def to_cmd(dac, value):
return pack("!ch", dac % 2, value) # a char and a 2 byte short