CRC16校验、CS 校验算法
废话不多说,直接上源码
# -*- coding:utf-8 -*-
__author__ = 'wangyixiang'
class Check(object):
#CRC16
def CRC16(self, x, invert):
a = 0xFFFF
b = 0xA001
for byte in x:
a = a >> 8
a ^= ord(byte)
for i in range(8):
last = a % 2
a >>= 1
if last == 1:
a ^= b
crc = hex(a)
return crc[4:6]+crc[2:4] if invert == True else crc[2:4]+crc[4:6]
#CS校验
def CSHex(self, data, len):
if not isinstance(data, list):
raise TypeError("addr not a list", type(data))
if len == 0:
return 0
else:
return (data[len - 1] + CSHex(data, len - 1)) % 256
def Check_main():
data = "hello CSDN"
cheak_test = Check()
print(cheak_test.CRC16(data,False))
if __name__ == "__main__":
Check_main()