sf.py 636 B

12345678910111213141516171819
  1. s = "FC0A08202302270924297450000100"
  2. def calculate_crc(cmdString):
  3. CRCCode = 0
  4. try:
  5. # 将字符串拆分成为16进制字节数据然后两位两位进行异或校验
  6. for i in range(1, len(cmdString) // 2):
  7. cmdHex = cmdString[i * 2: i * 2 + 2]
  8. if i == 1:
  9. cmdPrvHex = cmdString[(i - 1) * 2: i * 2]
  10. CRCCode = int(cmdPrvHex, 16) ^ int(cmdHex, 16)
  11. else:
  12. CRCCode = CRCCode ^ int(cmdHex, 16)
  13. except Exception as ex:
  14. pass
  15. return hex(CRCCode)[2:].upper().zfill(2) # 返回16进制校验码
  16. print(s + calculate_crc(s))