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 :

Convertir un string trop gros en byte[]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut Convertir un string trop gros en byte[]
    Bonjour, j'essaye de convertir une chaine de caractère en tableau de byte

    Mon souci est que la chaine est trop grosse.

    Voilà le code et le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            public static string Decode(ref string strDatos)
            {
                var temp = Convert.FromBase64String(strDatos);
                var temp2 = ASCIIEncoding.UTF8.GetChars(temp);
                string temp3 = new string(temp2);
                return temp3;
            }
    Erreur :

    Une exception non gérée du type 'System.FormatException' s'est produite dans mscorlib.dll

    Informations supplémentaires : Longueur non valide pour un tableau de caractères Base 64 ou une chaîne.

    L'erreur s'est produite au niveau du code en rouge.

    Auriez-vous une idée pour pouvoir convertir cette chaine ?

    Merci de votre aide, bonne journée

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Ta chaîne n'est peut-être pas trop longue. Des fois il y a des petites variantes dans l'encodage en base64 d'un système à un autre. Avec quoi elle a été encodé à l'origine?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut
    Voilà le code qui permet d'encoder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static string EncodeFromFile(ref string strPath)
            {
                FileInfo _ofi = new FileInfo(strPath);
                using (FileStream _oFs = _ofi.OpenRead())
                {
                    byte[] _oContenuFichier = new byte[_oFs.Length];
                    _oFs.Read(_oContenuFichier, 0, Int32.MaxValue);
                    return Convert.ToBase64String(_oContenuFichier);
                }
            }
    Ce que je ne comprends pas, c'est que cette méthode a été utilisée pour 4 fichiers et seul 1 seul a échoué

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Bizarre!

    Est-ce que tu as l'erreur si tu appel les méthodes une à la suite de l'autre pour le fichier problématique?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Decode(EncodeFromFile(@"C:\dump.txt"))

  5. #5
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    static byte[] GetBytes(string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
    }
     
    static string GetString(byte[] bytes)
    {
        char[] chars = new char[bytes.Length / sizeof(char)];
        System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
        return new string(chars);
    }

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut
    Bonjour,

    j'ai trouvé l'erreur, mon champ en base était limité a 2^24 caractères, et j'ai dépassé cette capacité.

    Du coup en enregistrant il a tronqué la chaine mais pour la récupérer et la convertir, ben echec car il manquait un bout !

    désolé pour le dérangement !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/07/2008, 17h33
  2. convertir une String en byte
    Par oc_alex86 dans le forum Langage
    Réponses: 6
    Dernier message: 07/06/2007, 11h20
  3. Convertir une string en byte
    Par ToTo13 dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2007, 19h48
  4. [Question] Convertir un String en Byte
    Par WyckiT dans le forum Langage
    Réponses: 1
    Dernier message: 08/10/2005, 12h50

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