我有一个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对象求和,但不能将它们加在一起。这似乎很方便。
解决此案的优雅方法是什么?
答案 0 :(得分:0)
我不会认为它很优雅,但有一种方法可以在一行中完成:
sum(i if type(i) in(int, float) else sum(i) for i in l)
问题是sum需要一个可以一起添加的值列表。如果您尝试手动添加数字和字节数组,则会得到相同的错误。