Peut-être que je suis juste de ne pas l'avoir vu, mais CRC32 semble soit inutilement compliqué, ou insuffisamment expliqué n'importe où j'ai pu trouver sur le web.
Je comprends l'essentiel, c'est que c'est le reste d'un non-effectuer en fonction arithmitic de la division de la valeur de message, divisé par le polynôme, mais la mise en œuvre effective de il m'échappe. J'ai lu Un Guide Indolore À l'Erreur CRC Algorithmes de Détection, et je dois dire qu'il n'a pas été sans douleur. Il va sur la théorie plutôt bien, mais l'auteur n'arrive jamais à un simple "C'est elle." Il fait dire que les paramètres sont pour la norme CRC-32 algorithme est, mais il néglige de pondre clairement de quelle façon vous l'obtenir. La partie qui me surprend, c'est quand il dit "c'est elle" et puis, ajoute, "oh, en passant, il peut être inversé ou a commencé avec des conditions initiales différentes," et ne donnent pas de réponse claire de ce que la dernière méthode de calcul de la somme de contrôle CRC32 compte tenu de tous les changements qu'il a simplement ajouté.
De toute façon, en plus de cela, ne quelqu'un a une explication simple de la façon dont il est calculé. J'ai tenté de code en C comment la table est formée, et il est inclus ci-dessous:
for(i=0;i<256;i++)
{
temp=i;
for(j=0;j<8;j++)
{
if(temp & 1)
{
temp>>=1;
temp ^=0xEDB88320;
}
else
{
temp>>=1;
}
}
testcrc[i]=temp;
}
Mais ce qui semble générer des valeurs incompatibles avec les valeurs que j'ai trouvé ailleurs sur internet. Je pourrais utiliser les valeurs que j'ai trouvé, mais je voulais comprendre comment ils sont arrivés chez eux.
Toute aide à la compensation de ces incroyablement déroutant nombre serait très apprécié.