Multiplication bytes [Résolu]

Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
- - Dernière réponse : clubberzZ
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
- 23 juil. 2007 à 19:30
Bonjour à tous,

J'éxplique mon problème, je souhaiterais faire une multiplication de byte par un chiffre (une variable que je récupère auparavant) :

byte[] toWrite = new byte[] { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 };
bw.Write(toWrite);

Mon appli récupère par exemple le nombre 20, avec celui-ci j'aimerais que ca me mette 20 fois 0x35 dans byte[] comme ci-dessus.
J'éspère avoir été assé clair, est-ce possible?

Merci d'avance! Cordialement
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
65
3
Merci
Essaie comme ça :

int

tonEntier;

byte[]
toWrite;

if (
int.
TryParse(
maVariable,
out tonEntier))
{

   toWrite =
new byte[
tonEntier];

   for (
int
i = 0;
i <
toWrite.
Length;
i++)
   {

      toWrite[
i] = 0x35;
   }
}

else
{

   MessageBox.
Show(
string.
Format(
"La valeur {0} n'est pas un nombre entier");
}

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Dire « Merci » 3

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

Codes Sources 124 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SharpMao
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Dernière intervention
25 février 2008
1
0
Merci
Bonjour,

en faisant

byte[] toWrite=new byte[tonEntier];
for (int i=0;i<toWrite.Length;i++)
{
toWrite[i]=0x35;
}

ca devrait le faire, non ?

Bonne journée

_Syl_
Commenter la réponse de cs__Syl_
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
0
Merci
Hello,

byte[] toWrite = new byte[maVariable];
for (int i = 0; i < toWrite.Length; i++)
{
  bw.Write(toWrite[i]=0x35);
}

J'ai bien essayé de mettre ma variable à la place de "tonEntier" mais impossible de convertir type "string" en "int"...
Commenter la réponse de clubberzZ
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
7
0
Merci
Si "maVariable" est un string contenant un nombre, alors tu peux le convertir comme cela :

int unNombre = int.Parse(maVariable);

(ou bien encore avec TryParse à la place de Parse, si tu n'es pas sur que maVariable soit toujours un nombre)

<hr size="2" width="100%" />Working as designed
Commenter la réponse de Nikoui
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
65
0
Merci
J'ai oublié de refermer la dernière parenthèse...

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Dernière intervention
25 février 2008
1
0
Merci
Re Bonjour,

oui il faut convertir ta chaîne en entier

Sharp, saurais-tu expliquer quelles sont les différences entre un

int.Parse(unChaine);

et un

Convert.ToInt32(uneChaine);
?

j'ai pour habitude de passer par la classe Convert quand j'ai des conversions à faire, donc j'ai jamais touché au Parse ou TryParse.
Commenter la réponse de cs__Syl_
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
65
0
Merci
Hello,

Il n'y a pas de réelle différence entre Convert.ToInt32 et int.Parse.

Par contre, int.TryParse est bien pratique, car il te retourne un bool indiquant si le parsing s'est fait correctement. pas besoin de faire du try catch pour cette ligne, un if/else comme plus haut suffit.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Dernière intervention
25 février 2008
1
0
Merci
Ok,
Je vais peut être m'y mettre alors ;)

Merci, Bonne journée

_Syl_
Commenter la réponse de cs__Syl_
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
0
Merci
Merci pour toutes ces réponses, mais les préfixs comme ci-dessous en rose n'ont plus besoin d'être?

   byte[] toWrite = new byte[tonEntier];
   for (inti = 0; i < toWrite.Length; i++)
   {
      bw.Write(toWrite[i] = 0x35);
   }

Merci beaucoup
Commenter la réponse de clubberzZ
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
65
0
Merci
Hello,

Je ne savais pas où tu avais besoin de ton tableau towrite, alors je l'ai déclaré à l'extérieur du if.
la ligne
bw.Write(toWrite);

doit être exécutée après la boucle for.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
0
Merci
J'ai fais comme ceci est-ce correct?
D'autre part j'aurais aimé savoir quelle méthode vous sembles la mieux? La votre ou la mienne?

Ma méthode :

int tonEntier = int.Parse(maVariable);



FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);




fs.Seek(machin, SeekOrigin.Begin);
byte[] toWrite = new byte[tonEntier];
for (int i = 0; i < bWrite.Length;i++)
{
    toWrite[i] = 0x35;
}
bw.Write(toWrite);




bw.Close();
fs.Close();

Merci
Commenter la réponse de clubberzZ
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
0
Merci
Je rectifies une ligne : for (int i = 0; i < toWrite.Length;i++)
Commenter la réponse de clubberzZ
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Dernière intervention
25 février 2008
1
0
Merci
Tu souhaites savoir quelle est la meilleure méthode ?
Tu veux dire est il plus interessent de remplir le FileStream dans ou en dehors de la boucle ?
je dois t'avouer que j'ai pas trop d'idée sur les perfs

Tu peux t'amuser à tester.

Est ce que ta méthode fonctionne ? C'est quand même ca le principal. :D

_Syl_
Commenter la réponse de cs__Syl_
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Dernière intervention
3 décembre 2007
0
Merci
Oui quelle est la meilleure syntaxe?

Sinon oui tout fonctionnes, merci à tous pour votre aide si précieuse!
Commenter la réponse de clubberzZ

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.