kann eine procedur/funktion von python nicht umsetzen.

Für allgemeine Fragen zur Programmierung mit PureBasic.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

kann eine procedur/funktion von python nicht umsetzen.

Beitrag 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
Zuletzt geändert von super_castle am 01.11.2010 13:18, insgesamt 1-mal geändert.
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

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

Beitrag von DrShrek »

Kein C sondern Python
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

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

Beitrag 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
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

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

Beitrag 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
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

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

Beitrag 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
Antworten