Multiplication bytes

Résolu
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 - 23 juil. 2007 à 10:01
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre 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

14 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
23 juil. 2007 à 13:11
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)
3
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
23 juil. 2007 à 10:06
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_
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
23 juil. 2007 à 13:02
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"...
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
23 juil. 2007 à 13:06
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
0

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

Posez votre question
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
23 juil. 2007 à 13:11
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)
0
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
23 juil. 2007 à 13:52
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.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
23 juil. 2007 à 14:07
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)
0
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
23 juil. 2007 à 14:15
Ok,
Je vais peut être m'y mettre alors ;)

Merci, Bonne journée

_Syl_
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
23 juil. 2007 à 14:39
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
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
23 juil. 2007 à 15:02
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)
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
23 juil. 2007 à 15:20
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
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
23 juil. 2007 à 15:21
Je rectifies une ligne : for (int i = 0; i < toWrite.Length;i++)
0
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
23 juil. 2007 à 15:31
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_
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
23 juil. 2007 à 19:30
Oui quelle est la meilleure syntaxe?

Sinon oui tout fonctionnes, merci à tous pour votre aide si précieuse!
0
Rejoignez-nous