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

Python 3.6:生成包含字节对象的列表的校验和,python,Python,我有一个液晶显示器,需要显示数据被串行发送 这个包的框架是这样的 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'0123456789

我有一个液晶显示器,需要显示数据被串行发送

这个包的框架是这样的

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对象求和,但不能将其相加。看来这样做很方便


什么是一个优雅的方式来解决这个问题?

< P>我不认为它是优雅的,但它是一种方法来完成这一行:

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

问题是sum需要一个可以相加的值列表。如果试图手动将数字和字节数组相加,则会出现相同的错误。

校验和算法是什么?我们如何帮助您了解您提供的当前信息?请注意,如果数据顺序不同,大多数校验和算法都会给出不同的校验和。在这种情况下,校验和算法的可能重复项是简单的字节和。它不包括EOF。我只是在我的问题陈述中推断出这个算法,因为问题主要是指如何最好地求两个在某些情况下都可以求和的对象的和。我喜欢它。它不像总和(框架)那么优雅,但它能工作。非常感谢。我稍后会检查这个答案,除非有更优雅的东西出现随时都可以。请注意,如果列表中包含sum通常会失败的类型,则此行将失败。如果对字节对象进行迭代,则会得到一个整数序列。似乎对同时包含字节或字节数组的整数列表求和应该继续求和。