计算十六进制数据的校验和,并在python中通过串行.to_字节发送

计算十六进制数据的校验和,并在python中通过串行.to_字节发送,python,hex,checksum,pyserial,Python,Hex,Checksum,Pyserial,我有以下代码: def checksum_calc(data): checksum = 0 for ch in data: checksum += ord(ch) return hex(checksum % 256) checksum=checksum_calc('\xAA\x41\xA1\x0E\x63\x02\x15\x0A\x3F\x00\x00\x00\x00') test=[0xAA,0x41,0xA1,

我有以下代码:

def checksum_calc(data):
        checksum = 0
        for ch in data:
                checksum += ord(ch)
        return hex(checksum % 256)

checksum=checksum_calc('\xAA\x41\xA1\x0E\x63\x02\x15\x0A\x3F\x00\x00\x00\x00')
test=[0xAA,0x41,0xA1,0x0E,0x63,0x02,0x15,0x0A,0x3F,0x00,0x00,0x00,0x00,checksum]
 ser.write(serial.to_bytes(test))
我需要串行发送的数据是可变的,可以根据代码的其他部分进行更改,因此我需要计算数据的校验和,然后使用serial.to_字节发送数据

当我运行代码时,它返回:
字符串的大小必须为1

然而,校验和计算功能运行良好,但我不能将结果放入测试变量并将其发送到串行

如何将校验和结果放入测试变量?

我在这里找到了答案:

我必须这样做

test= ['0xAA','0x41','0xA1','0x0E','0x63','0x02','0x15','0x0A','0x3F','0x00','0x00','0x00','0x00',checksum]
   int_values = [int(h, base=16) for h in test]
但我希望第二次接近