Multiplication bytes

[Résolu]
Signaler
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007
-
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007
-
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
A voir également:

14 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
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)
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
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_
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

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"...
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
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)
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
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.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
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)
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
Ok,
Je vais peut être m'y mettre alors ;)

Merci, Bonne journée

_Syl_
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

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
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
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)
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

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
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Je rectifies une ligne : for (int i = 0; i < toWrite.Length;i++)
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
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_
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Oui quelle est la meilleure syntaxe?

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