Comparaison de byte array [Résolu]

olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 avril 2008 à 20:18 - Dernière réponse : olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention
- 5 oct. 2008 à 09:03
Bonjour

A part faire une boucle existe-t-il une methode de comparaison de deux byte array ?
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
xmox667 357 Messages postés jeudi 8 juin 2006Date d'inscription 26 décembre 2011 Dernière intervention - 5 avril 2008 à 13:54
3
Merci
Salut,
J'ai fait différentes recherches sur le net et j'ai trouvé ceci:
http://bytes.com/forum/thread278667.html
En résume je pense que tu dois passer par une boucle.
A+

Merci xmox667 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de xmox667
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 avril 2008 à 15:55
0
Merci
Merci à toi,

Oui c'est ce que j'avais conclu
Commenter la réponse de olibara
scoubidou944 728 Messages postés mardi 22 avril 2003Date d'inscription 19 janvier 2017 Dernière intervention - 2 oct. 2008 à 18:39
0
Merci
Autre solution :
calculer le hash de chaque tableau et comparer.

----------------------------
C++ forever
C# amateur
Commenter la réponse de scoubidou944
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 4 oct. 2008 à 19:24
0
Merci
Surtout ne pas faire d'amalgame entre le hash d'on parle scoubidou944 et la méthode GetHashCode, qui ne garanti en rien un retour identique pour un contenu de tableau identique.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 oct. 2008 à 19:40
0
Merci
Bien entendu !

Mais si c'est pour faire ca, alors je pense qu'une petite methode avec boucle est préférable !
Commenter la réponse de olibara
scoubidou944 728 Messages postés mardi 22 avril 2003Date d'inscription 19 janvier 2017 Dernière intervention - 5 oct. 2008 à 00:00
0
Merci
je parle de hash MD5 bien entendu ;p.

Olibara : pourquoi réinventer la roue ?

Cette fonction pourra être réutilisée très souvent alors que ta boucle, j'ai des doutes. Enfin c'est mon avis.

// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static public string GetHash(byte[] input)
{
            // Create a new instance of the MD5CryptoServiceProvider object.
            MD5 md5Hasher = MD5.Create();

            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hasher.ComputeHash(input);

            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data
            // and format each one as a hexadecimal string.
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2", CultureInfo.InvariantCulture));
            }

            // Return the hexadecimal string.
            return sBuilder.ToString();
        }
Commenter la réponse de scoubidou944
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 oct. 2008 à 07:53
0
Merci
Salut


Parfois il faut aussi penser a etre performant et pratique !


J'ai parfois le sentiment que la hantise de la ré-usabilité et du respect d'un design fait oublier qu'une roue de vélo ne sera jamais une roue d'avion ni de patin a roulette


Dons ce n'est pas parce que le codage informatique offre la liberté intellectuelle de concevoir la roue qui fera le café que ce sera forfément la meilleure roue pour ta moto !


 
Commenter la réponse de olibara
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 5 oct. 2008 à 08:54
0
Merci
Sur de petit tableaux la différence ne devrait pas être énorme, mais sur de plus gros volumes ça peut jouer.

Dans le cas présent, si la fonctionnalité attendue est l'apport d'une réponse sous forme d'un booléen, l'intérêt majeur de la comparaison via une boucle c'est qu'elle va pouvoir répondre non à la première différence trouvé (différence de longueur des tableaux ou différence de valeur à l'index n) et s'arrêter là.

A l'inverse la méthode avec le hash pourra être intéressante en cas d'appel "distant" nécessitant le transfert des données sur un lien lent : si le calcul ne peut être déporté au plus prêt du stockage, transférer un hash peut alors avoir du sens.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 5 oct. 2008 à 08:57
0
Merci
"comparaison via une boucle" : à noter que la comparaison n'a pas forcément besoin d'être faite de façon linéaire, je suppose que quelques algorithmes existent pour tenter maximiser les chances de trouver une différence lors d'une telle opération.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 oct. 2008 à 09:03
0
Merci
Salut coq

Je rejoins tout a fait tes remarques mais j'ajoute :

Un autre avantage de la comparaison via boucle, c'est que dans une comparaison il est souvent nécessaire de determiner l'ordre, plus petit ou plus grand (indispensable pour un tri)

Et que si c'est une comparaison pour un tri, il est evident que la methode de comparaison à intéret à etre performante !
Commenter la réponse de olibara

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.