Seite 1 von 1

kann eine procedur/funktion von python nicht umsetzen.

Verfasst: 01.11.2010 10:44
von super_castle
wer kann mir bitte dieses mal in eine purebasis-procedure/funktion umsetzen:

Code: Alles auswählen

def calculate_checksum(block):
    """
    Calculate the checksum for a 256 bytes block
    """
    # Constants
    SEED_CRC = 0xFFFF    # Seed for CRC
    MASK_CRC = 0x1021    # Mask of CRC-16-CCITT (ISO 3309 / x^16 + x^12 + x^5 + 1)

    crc_tmp = SEED_CRC   # Initialize CRC
    for i in block:
        crc_tmp = crc_tmp ^ (ord(i) << 8)
        for j in range(8):
            if (crc_tmp & 0x8000):
                crc_tmp = (crc_tmp << 1) ^ MASK_CRC
            else:
                crc_tmp = crc_tmp << 1
    crc_tmp = (crc_tmp & 0xFFFF) ^ 0xFFFF  # Make the CRC ones' complement
   
    return chr(crc_tmp // 256) + chr(crc_tmp % 256)
danke.

gruss

Re: kann eine procedur/funktion von "c" nicht umsetzen.

Verfasst: 01.11.2010 11:10
von DrShrek
Kein C sondern Python

Re: kann eine procedur/funktion von python nicht umsetzen.

Verfasst: 01.11.2010 13:19
von super_castle
jup, danke. sieht fast aus wie eine "c"-funktion.

also wer kann bitte diese python-funktion mal umsetzen in purebasic.

danke.

gruss

Re: kann eine procedur/funktion von python nicht umsetzen.

Verfasst: 01.11.2010 13:28
von HeX0R
Das scheint CRC16 zu sein, das brauchte ich mal für unseren GPRS-Logger:

Code: Alles auswählen

#CRC16POLY = $1021

Procedure CRC16(*MEMStart.BYTE, Length)
	Protected P, k, MyCRC = $FFFF
	;
	While Length
		P = *MEMStart\b & $FF
		For k = 1 To 8
			If (P ! MyCRC) & 1 = 1
				MyCRC >> 1
				MyCRC ! #CRC16POLY
				MyCRC & $FFFF
			Else
				MyCRC >> 1
			EndIf
			P >> 1
		Next
		*MEMStart + 1
		Length - 1
	Wend

	ProcedureReturn MyCRC
EndProcedure

Re: kann eine procedur/funktion von python nicht umsetzen.

Verfasst: 01.11.2010 14:27
von super_castle
Das scheint CRC16 zu sein
hmmm..., what is dat denn.

ist eine routine um eine checksumme von 256byte , die das tape vom cpc464 eingelesen hat.

danke.
das ist aber kompliziert.

gruss