Python 3.6:生成包含字节对象的列表的校验和

时间:2017-09-29 19:01:33

标签: python

我有一个LCD显示器,需要连续发送显示数据。

此数据包的帧是这样的。

frame=dict(
    type=0x10,
    sequence=0,
    length=46,
    line=0,
    text=b'01234567890' * 4,
    checksum=0,
    eof=0x9F
)

如果我在一个帧中生成一个值列表,我可能会得到这个。

>>> list(frame.values())
[16, 0, 46, 0, b'01234567890012345678900123456789001234567890', 0, 159]

如果我对此列表求和以填充校验和,则会引发异常。我可以在没有bytearray的情况下对列表求和,我可以对bytes对象求和,但不能将它们加在一起。这似乎很方便。

解决此案的优雅方法是什么?

1 个答案:

答案 0 :(得分:0)

我不会认为它很优雅,但有一种方法可以在一行中完成:

sum(i if type(i) in(int, float) else sum(i) for i in l)

问题是sum需要一个可以一起添加的值列表。如果您尝试手动添加数字和字节数组,则会得到相同的错误。