Multiplication bytes [Résolu]

clubberzZ 89 Messages postés vendredi 29 octobre 2004Date d'inscription 3 décembre 2007 Dernière intervention - 23 juil. 2007 à 10:01 - Dernière réponse : clubberzZ 89 Messages postés vendredi 29 octobre 2004Date d'inscription 3 décembre 2007 Dernière intervention
- 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
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 23 juil. 2007 à 13:11
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)

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de SharpMao
cs__Syl_ 66 Messages postés vendredi 20 octobre 2006Date d'inscription 25 février 2008 Dernière intervention - 23 juil. 2007 à 10:06
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_
clubberzZ 89 Messages postés vendredi 29 octobre 2004Date d'inscription 3 décembre 2007 Dernière intervention - 23 juil. 2007 à 13:02
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
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 23 juil. 2007 à 13:06
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
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 23 juil. 2007 à 13:11
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
cs__Syl_ 66 Messages postés vendredi 20 octobre 2006Date d'inscription 25 février 2008 Dernière intervention - 23 juil. 2007 à 13:52
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_
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 23 juil. 2007 à 14:07
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
cs__Syl_ 66 Messages postés vendredi 20 octobre 2006Date d'inscription 25 février 2008 Dernière intervention - 23 juil. 2007 à 14:15
0
Merci
Ok,
Je vais peut être m'y mettre alors ;)

Merci, Bonne journée

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