Changer la dimension d'un byte array [Résolu]

olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 avril 2008 à 08:51 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 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
Afficher la suite 

6 réponses

Répondre au sujet
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 5 avril 2008 à 10:53
+3
Utile
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-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 avril 2008 à 11:19
0
Utile
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);
Commenter la réponse de olibara
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 5 avril 2008 à 11:35
0
Utile
Je ne pense pas qu'on puisse faire mieux non...
Enfin, pourquoi pas un ReadByte(4) ?

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 avril 2008 à 11:44
0
Utile
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 !!
Commenter la réponse de olibara
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 5 avril 2008 à 11:57
0
Utile
Dans ce cas, je ne vois pas mieux...

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 5 avril 2008 à 15:18
0
Utile
Salut,

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

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.