CCITT-CRC16 Checksum
Verfasst: Dienstag 4. November 2003, 00:34
Eine Möglichkeit die CCITT-CRC16 Checksumme zu generieren.
Creation by wuf.
Suchte im Internet nach einer Python-Varianten , fand aber
nur Beispiele in C, BASIC und ASM. Habe schlussendlich
eine ASM-Variante nach Python konvertiert. Vielleicht gibt
es noch andere Python-Varianten?
Gruss wuf
Creation by wuf.
Suchte im Internet nach einer Python-Varianten , fand aber
nur Beispiele in C, BASIC und ASM. Habe schlussendlich
eine ASM-Variante nach Python konvertiert. Vielleicht gibt
es noch andere Python-Varianten?
Gruss wuf
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Funktion : Generiert eine CRC16 Checksumme mit dem CCITT-Polynom
# Version : 1.01
# Autor : Fritz Wüst
# Datum : 03.11.2003
def GenCCITT_CRC16(Buffer):
#~~ Generierung der CCITT-CRC16 Checksumme
numBytes = len(Buffer)
numBits = 8
crcsum = 0
temp0 = 0
temphigh = 0
polynom = 0x1021 #CCITT Polynom
for byte in range (numBytes):
temp0 = ord(Buffer[byte])
temp0 <<= 8
crcsum ^= temp0
for bit in range (numBits):
crcsum <<= 1
temphigh = crcsum
temphigh &= 0xFFFF0000
if temphigh > 0:
#~~ Es gabe ein Übertrag ins Bit-16
crcsum &= 0x0000FFFF
crcsum ^= polynom
return(crcsum)
Buffer = []
#~~ Datenliste
Buffer.append('A')
Buffer.append('B')
Buffer.append('C')
Buffer.append(chr(255))
Buffer.append(chr(255))
Buffer.append(chr(255))
CRC16 = GenCCITT_CRC16(Buffer)
#~~ Ausgabe der CCITT-CRC16 Checksumme
print "CRC16 (dezimal) = %d (hex) = %x" % (CRC16,CRC16)