Changer la dimension d'un byte array

Résolu
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 5 avril 2008 à 08:51
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 5 avril 2008 à 15:18
Bonjour,


J'ai l'habitude de manipuler des tableaux en C mais csharp me fait des caprices


Je veux dimensionner un tableau de 5 byte et fixer cette longueur a 5 bytes


si je fait
      byte [] sCP=new byte[5]; // c'est bon
// ensuite (lookCP ne fait pas plus de 5 bytes)
      sCP=System.Text.Encoding.ASCII.GetBytes(lookCP);
// la longueur a changé ... soit


// Mais maintenant seuls les 5 premiers bytes m'intéressent, comment je peux supprimer ou ajouter des element a mon array
A voir également:

6 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
5 avril 2008 à 10:53
Bonjour,
Une fois la taille d'un tableau fixée, on ne peut plus la changée (statique).
Il faut alors recopier les éléments dans un nouveau tableau (plus grand ou plus petit selon qu'on veuille l'agrandir ou le rétrécir).

Regarder du côté de la méthode CopyTo de class Array.

<hr />
-My Blog-
3
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 5
5 avril 2008 à 11:19
Merci Bidou

ca c'est pas pratique !!
Ya des choses géniales en cSharp mais parfois il y a des trucs ou il faut bricoler

Exemple lié a ma question, je ne sais pas s'il y a une maniere plus efficace de faire mais ca me semble un peu lourdingue !
Tout ca pour lire une chaine de 5 bytes avec \0 pour la mettre dans un string (c'est surtout le substring que je trouve un peu lourd)

        byte[] xcp = binReader.ReadBytes(5); ;
        string dum = System.Text.Encoding.ASCII.GetString(xcp);
        icp.sCP=dum.Substring(0, 4);
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
5 avril 2008 à 11:35
Je ne pense pas qu'on puisse faire mieux non...
Enfin, pourquoi pas un ReadByte(4) ?

<hr />
-My Blog-
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 5
5 avril 2008 à 11:44
Salut

Pourquoi pas un readbyte(4)  ??

Parce que la place reservée dans le fichier est de 5 bytes, donc je dois de toute facon l'avaller !
Je pourrais effectivement faire le code ci apres

        byte[] xcp = binReader.ReadBytes(4);
        byte brol   = binReader.ReadByte();
        icp.sCP    = System.Text.Encoding.ASCII.GetString(xcp);

Mais c'est toujours 3 lignes d'instruction et je pense que l'overhead d'un read est plus lourd qu'un substring mais je suis pas sur.

Je sais que tu va me dire que je pourrais faire

        icp.sCP    = System.Text.Encoding.ASCII.GetString(binReader.ReadBytes(4));

Mais ca deviens moins lisible et je perds un certain controle !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
5 avril 2008 à 11:57
Dans ce cas, je ne vois pas mieux...

<hr />
-My Blog-
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
5 avril 2008 à 15:18
Salut,

Probablement regarder du côté du C++/CLI...

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous