IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment comparer un byte array avec un string ?


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Comment comparer un byte array avec un string ?
    Bonjour

    Quelle serait la meilleure methode et la plus performante comparer un byte array avec un string

    Sachant que
    1- La longueur de mon byte array est fixe
    2- La longueur de mon string aussi
    3- Que c'est UN string a comparer avec beaucoup de byte array ?
    4- Que mon byte array est en fait le resultat d'un binaryread de 5 bytes representant un tableau de char C natif terminé par \0;

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    conversion string --> Byte array
    (attention de respecter format char desiré )

    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for tous tes byte array
    {
             comparaison des deux byte array
    }

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    C'est curieux

    Il y a une partie de ton message que je vois dans le mail de notification mais pas ici ??

    je mettrais ma string sous ta forme de byte array (attention de respecter format char desiré )
    Mais quelle est la methode pour comparer deux byte array ?

    En C j'avais le memcmp
    Mais en Csharp j'ai rien vu ?
    Faut il faire une boucle byte par byte

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    si tu trouve rien dans les fonctions en relation avec le type byte, je le ferais à la main.

    attention à la longueur, les reference null, mais comme tu viens du C/C++, tu connais tout ces problèmes potentiels.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    A la main ?

    Quel bazar !


  6. #6
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    main non un truc simple du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public static bool ArraysEqual(byte[] ba1, byte[] ba2)
    {
    if ( ba1 == null )
    throw new ArgumentNullException("ba1");
    if ( ba2 == null )
    throw new ArgumentNullException("ba2");
     
    if ( ba1.Length != ba2.Length )
    return false;
     
    for(int i=0; i < ba1.Length; i++)
    {
    if ( ba1[i] != ba2[i] )
    return false;
    }
    return true;
    }
    (Source)

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    J'avais déja fait un truc un peu plus complet
    Mais sans traiter l'exception, j'en convient ..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       private int ByteCompare(byte[] a, byte[] b)
        {
          int dif = 0;
          int len = Math.Min(a.Length, b.Length);
          for (int i = 0; i < len; i++)
          {
            dif=a[i]-b[i];
            if (dif == 0) continue;
            return dif;
          }
          return a.Length-b.Length;
        }

Discussions similaires

  1. Comment comparer deux byte[]?
    Par neptune dans le forum Contribuez
    Réponses: 6
    Dernier message: 02/06/2008, 17h59
  2. Réponses: 9
    Dernier message: 27/06/2006, 16h55
  3. Réponses: 16
    Dernier message: 24/11/2005, 12h43
  4. Comment comparer une string et un float ?
    Par chourmo dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 12h51
  5. Réponses: 2
    Dernier message: 06/11/2005, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo