Python3.4使用余数作为字节

时间:2016-02-02 18:45:30

标签: python byte

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

我真的很感激帮助。谢谢,

1 个答案:

答案 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