C/C++ [C++][Socket]writter => writeDouble

Inscrit
1 Mars 2014
Messages
120
Reactions
0
#1
Salut,

j'viens de voir que dans les sources de D. ils utilisent la méthode writeDouble.. Mais je ne sais pas comment l'implémenter dans mon writter en c++? Qqun sait comment faire ?
Merci !
 

Lakh92

Membre Actif
Inscrit
24 Decembre 2009
Messages
118
Reactions
0
#2
Il me semble que tu peux directement cast le double en char* et l'écrire.
Attention à l'endian, également !
 
Inscrit
1 Mars 2014
Messages
120
Reactions
0
#3
heu Oo' j'vois pas du tout comment tu veux faire ça.

J'ai un char *buffer, pour insérer une donnée de plus de 1 octet (taille d'une case de mon buffer) je dois couper cette donné pour l'inscrire case par case.
J'peux pas inscrire autrement que case par case, du coup comment faire ^^ ?
 

Lakh92

Membre Actif
Inscrit
24 Decembre 2009
Messages
118
Reactions
0
#4
En mémoire, un double n'est rien d'autre que 8 octets. Tu peux donc cast ton double en char* et écrire ces 8 octets dans ton flux.
 
Inscrit
1 Mars 2014
Messages
120
Reactions
0
#5
Ouaip j'ai trouvé une solution grâce à toi.

Si ça peut aider certain :
Code:
void writeDouble(double d)
{
  char *buftmp = new char [sizeof(double)];
  *(double *)buftmp = d;
  _buf += buftmp;  // mon _buf est une string d'où le +=
}
Code:
double readDouble()
{
  double d = *(double *)(_buf + _pos); // ici _buf est un const char * (celui qui vient de la socket)
  _pos += (int)sizeof(double);
  return (d);
}
 
Haut Bas