Scusate, perche' mai lo spostamento di tanti bit dovrebbe produrre zero? Stiamo parlando di una longword (32bit), "avanza" un intero byte ...difatti quello spostamento a sinistra di 24 bits non fa altro che passare l'ultimo byte della longword al primo byte:
000000FF <<24bit = FF000000
(sempre se ci ho capito qualcosa)
Tornando al codice.. ho capito solo adesso (maledetto io che non capisco un cavolo di C) che quel segmento #if 0 #endif non viene nemmeno compilato (mi era stato gia' detto.. ma io credevo che si riferiva alla parte precente (non postata) di codice), e' servito solo al tizio la prima volta per leggersi il seed iniziale (quel 0xe0c04495 che poi diventa costante nel programma finale) in quanto l'algoritmo "originale" del CRC32 imposta il valore iniziale a 0xFFFFFFFF.
Parlando poi del VB, mi sa pure a me che tradurre quel codice cosi' com'e' scritto e' impossibile (servono molti piu' passaggi, perche' mancano pure le funzioni logiche piu' elementari).
Ora sto utilizzando una routine standard per il CRC32, cambiando il polinomio a 0x04c11db7 e l'init a 0xe0c04495 ...ma lo stesso non funziona.![]()

Rispondi quotando