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 :

retirer des caractères dans un énorme tableau ou dans un énorme stream


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut retirer des caractères dans un énorme tableau ou dans un énorme stream
    Bonjour

    Je télécharge depuis une carte électronique 256Mo(2Gb) de données que je reçois dans un premier temps dans un tableau de bytes puis que j'enregistre dans un fichier avec un BinaryWriter.

    J'ai besoin de retirer 2 octets tous les 2110octets.
    J'arrive à faire ca avec une bonne grosse boucle for mais c'est un peu long et je me demandais si .NET n'aurait pas quelquechose de plus puissant pour faire ça, sur le tableau de byte ou sur le stream peu importe...

    Merci par avance pour vos conseils.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu peux utiliser le BlockCopy pour créer un nouveau tableau de byte avec les caracteres supprimés

    http://msdn.microsoft.com/en-us/libr...blockcopy.aspx

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Est-ce que tu as la possibilité de recevoir les données sous forme d'un Stream, plutôt qu'un tableau d'octets ? Ce serait nettement mieux, car tu pourrais écrire les données dans le fichier au fur et à mesure que tu les reçois. Tu pourrais alors faire quelque chose comme ça :

    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
    using (var dataStream = GetData())
    using (var fileStream = File.OpenWrite(path))
    {
        byte[] buffer = new byte[2110];
        int count;
        int offset = 0;
        while ((count = dataStream.Read(buffer, offset, buffer.Length - offset)) != 0)
        {
            offset += count;
            // If the buffer is full, flush it to the file
            if (offset == buffer.Length)
            {
                fileStream.Write(buffer, 0, buffer.Length);
                // Skip 2 bytes
                dataStream.ReadByte();
                dataStream.ReadByte();
                offset = 0;
            }
        }
    }

  4. #4
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Bonjour

    Merci pour vos idées et vos codes qui m'ont appris des choses.

    Non, je n'ai pas la possibilité de recevoir dans autre chose qu'un tableau de byte. J'utilise une DLL pour gérer l'usb qui me rend les datas là dedans.

    Finalement, vu la lourdeur d'une opération sur autant de données, j'ai préféré modifier ce qui m'envoie les données afin de les récupérer par paquets de 2112 octets.
    Une fois reçu je n'en enregistre que 2110 et zou j'ai ce que je veux ; avec en prime la possibilité de vérifier quelques bricoles avant de laisser continuer !

    Merci

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

Discussions similaires

  1. [XL-2007] Copier coller des plages d'une sélection à la suite dans un autre tableau
    Par christinadeneva dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2015, 19h02
  2. Réponses: 1
    Dernier message: 11/10/2010, 14h31
  3. [XL-2003] nom de tableau contenu dans un autre tableau
    Par alainb dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/06/2010, 21h36
  4. Réponses: 5
    Dernier message: 17/12/2009, 17h01
  5. Retirer des caractères d'une liste
    Par solorac dans le forum Excel
    Réponses: 2
    Dernier message: 13/03/2008, 15h12

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