Simple Problème de CAST [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
8 juin 2006
-
Messages postés
6
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
8 juin 2006
-
Bonjour,
j'ai un soucis tout bête mais qui me pose de gros soucis. J'utilise un objet UDPClient qui permet entre autre d'envoyé des datagrammes en UDP. Le problème c'est que je souhaite envoyé un tableau de double (double[] ForceManette = new double[3]) et que la méthode UDPClient.Send() prend en parmaètre un byte[] et la longueur de ce tableau.
Ma question est donc simple, comment transformé mon tableau ForceManette en tableau de byte pour pouvoir le mettre en paramètre de la fonction Send ?
Merci de votre aide.

3 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Tu peux fixer ton tableau en mémoire et utiliser un pointeur byte* pour parcourir le tableau de doubles, ou tu utilises la classe Buffer qui va le faire pour toi..

// Tableau de 3 doubles.
double[ ] doubles = { 0.1, 0.2, 0.3 };


// Nombre de bytes dans le tableau.
int cnt = Buffer.ByteLength( doubles ); // sizeof( double ) * doubles.Length


// On créer un tableau de bytes assez grand.
byte[ ] bytes = new byte[ cnt ];


// On fait une copie de doubles vers bytes.
Buffer.BlockCopy( doubles, 0, bytes, 0, cnt );
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Salut,

En utilisant Convert.ToByte(double) tu vas perdre la précision apres la virgule :/

En fait, il faut que tu convertises tes double en decimal, et que pour chaque valeur de ton tableau, tu utilise Convert.ToByte(decimal).

Mx
MVP C# 
Messages postés
6
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
8 juin 2006

Merci à vous deux.