19 lines
464 B
Python
19 lines
464 B
Python
import sys
|
|
|
|
PRESET_VALUE=0xFFFF
|
|
POLYNOMIAL=0x8408
|
|
|
|
def checksum(pucY):
|
|
uiCrcValue = PRESET_VALUE
|
|
for ucY in pucY:
|
|
uiCrcValue = uiCrcValue ^ ucY
|
|
for ucJ in range(8):
|
|
if uiCrcValue & 0x0001:
|
|
uiCrcValue = (uiCrcValue >> 1) ^ POLYNOMIAL;
|
|
else:
|
|
uiCrcValue = (uiCrcValue >> 1)
|
|
return uiCrcValue;
|
|
|
|
if __name__ == '__main__':
|
|
print('%X' % (checksum(bytearray.fromhex(sys.argv[1])),))
|