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

Accès aux données Discussion :

[2.0] Convertir une cle primaire byte[] en string


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut [2.0] Convertir une cle primaire byte[] en string
    Bonjour,

    je cherche comment convertir une clé primaire qui est au format tableau de byte (byte[]) en string (si possible).

    Cette clé primaire vient d'une base de données ORACLE (varbinary(16)).

    J'ai besoin de cette clé primaire car je dois créer des objets contenu dans une autre table et qui utilise cette clé primaire comme clé etrangere.

    J'ai donc fait la méthode simple suivante :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    byte[] array; // contient la cle unique d'oracle recuperée avant
    string s;
    foreach (byte b in array)
    {
    char c = Convert.ToChar(b);
    s+= c.ToString();
    }

    Cependant pour une clé donnée j'obtiens des carrés et autres (m/“g»<Cµ¾èfÜþ> pour etre plus precis)...

    Quelqu'un a une idée ?



    @+

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par freddyboy
    Quelqu'un a une idée ?
    Ca dépend de l'encodage exemple :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Encoding.Unicode.GetString(LesBytes);

  3. #3
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    ok merci je me doutais que c'etait une histoire d'encodage.
    Apres quelques recherches, il semble que la classe GuidConverter soit mon ami dans le cas present, par contre je n'arrive pas à m'en servir.

    Je voudrais prendre le tableau de byte, ou autre car je recupere mon GUID sous forme de tableau de byte via un DataReader mais je peux le recuperer sous une autre forme, et le convertir en string.

    Le pire s'est que je ne suis meme pas sur que ma requete avec un GUID sous forme de string va fonctionner.



    @+

  4. #4
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Encoding.Unicode.GetString(LesBytes);

    J'ai essayé mais cela ne fonctionne pas non plus.

    @+

  5. #5
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par freddyboy
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Encoding.Unicode.GetString(LesBytes);

    J'ai essayé mais cela ne fonctionne pas non plus.

    @+

    Comment les bytes ont été formés avant d'être inséré dans la base ?

    Essaie un autre encodage : ASCII par exemple.

  6. #6
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    Citation Envoyé par mehdi_tn
    Comment les bytes ont été formés avant d'être inséré dans la base ?

    Essaie un autre encodage : ASCII par exemple.
    Je ne sais pas, ce GUID est une clé primaire Oracle donc s'est Oracle qui gere cela.

    scifire, merci, je vais jeter un oeil.

    @+

  7. #7
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    scifire, j'ai testé et cela ne fonctionne pas, enfin pas comme je veux du moins.

    Mon GUID dans la base de données est : 6D2F930667BB3C43B5BEE86610DCFE3E

    Ton application me sort : m471476g18760C181190232f1622025462

    Punaise j'ai pas fini de galérer avec ces histoires.

    du coup de main

    @+

  8. #8
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    Salut.
    Je te propose une petite methode qui va faire la conversion necessaire
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;
     
    namespace Conversion
    {
        class Program
        {
            static void Main(string[] args)
            {
                Random r = new Random();
     
                const int MAX = 16;
                byte[] data = new byte[MAX];
                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = (byte)r.Next(byte.MinValue, byte.MaxValue);
                }
     
     
                foreach (byte b in data)
                {
                    Console.Write((char)b);
                }
                Console.WriteLine();
     
                string result = ConvertData(data);
                Console.WriteLine(result);
            }
     
            public static bool IsAlphaNumeric(char symbol)
            {
                Regex regexAlphaNum = new Regex("[^a-zA-Z0-9]");
                return !regexAlphaNum.IsMatch(symbol.ToString());
            }
     
            public static string ConvertData(byte[] data)
            {
                StringBuilder buffer = new StringBuilder();
                char[] symbols = new char[data.Length];
                for (int i = 0; i < symbols.Length; i++)
                {
                    symbols[i] = Convert.ToChar(data[i]);
                    if (IsAlphaNumeric(symbols[i]))
                    {
                        buffer.Append(symbols[i]);
                    }
                    else
                    {
                        buffer.Append((int)symbols[i]);
                    }
                }
                return buffer.ToString();
            }
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/04/2007, 12h45
  2. [VB.NET 2.0] Convertir une structure en Byte() ?
    Par arno2000 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/11/2006, 12h38
  3. Réponses: 1
    Dernier message: 11/08/2006, 23h02
  4. comment supprimer une clé primaire d'une table ?
    Par polianita dans le forum Access
    Réponses: 10
    Dernier message: 03/08/2006, 15h34
  5. Réponses: 8
    Dernier message: 26/09/2005, 22h06

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