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

Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
3
Merci
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-

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
0
Merci
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
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
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
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
0
Merci
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
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Dans ce cas, je ne vois pas mieux...

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
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.