我写了一个计算校验和的函数。
Data = ( 0x07, 0x3F, 0x20, 0xCF, 0x44, 0x00, 0x5B, 0x7B, 0x04, 0x77)
hexOrg = 0
hexData = Data
Header = (hexOrg&0xFF00>>16, hexOrg&0xFF, len(hexData))
def bcc(data):
BCC = 0
print(data)
for d in data:
print(d)
BCC ^= d
overflow = (BCC & 0x80) >> 7
BCC <<= 1
BCC &= 0xFF
BCC |= overflow
BCC &= 0xFF
return BCC
如果我传入一个元组Header
,它将起作用。
BCC = bcc(Header)
print("BCC = %02X" % BCC)
我尝试传入组成元组的值(无论是元组还是列表),它仅使用第一个元素。
print("BCC = %02X" % bcc([hexOrg&0xFF00>>16, hexOrg&0xFF, len(hexData)]))
print("BCC = %02X" % bcc((hexOrg&0xFF00>>16, hexOrg&0xFF, len(hexData))))
如何在不将值分配给变量的情况下执行此操作?
我已经阅读了类似问题的答案,但似乎都不适用于我的代码。
答案 0 :(得分:1)
由于循环迭代结束时的return
语句,它仅使用第一个元素,该语句在处理传入的元组的第一个元素后退出该函数。
尝试将return
语句移出for循环。然后,您调用bcc
函数的所有3种方法都应相同。