Casting pb de passage de c++ en C#

Signaler
Messages postés
13
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
7 avril 2006
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
bonjour

alors voilà mon probleme : en C++ je fais ca :


string recvQueue;
int
nbRead = recv(socketClient, buffer, BUFSIZE, 0);
recvQueue.append(buffer, nbRead);
if (recvQueue.size() <
sizeof(length))

return;
int length = *((int *) recvQueue.data());

voilà je vois absolument pas comment traduire cette derniere ligne C# sans utiliser de fonctions fastidieuse qui fai ca a la main....

voilà si vous avez une idée... merci
a+

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
bon... si je comprends bien...
tu as utilisé un StringBuilder pour recvQueue.

pour obtenir la longueur, tu peux utiliser : recvQueue.Length

Séb

Sébastien FERRAND

Blog :
http://blogs.developpeur.org/sebmafate</FO< body>
Messages postés
13
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
7 avril 2006

nan nan c absolument pas ce que je veux faire

ce que je veut faire c récupérer un int envoyé sur le réseau et qui n'est pas sous forme de chaine de caractères. Je l'ai apelé length parce que c'est la taille du fichier qui sera envoyé ensuite mais ca pourrai etre nimporte quoi

si tu veux de lautre coté ca fait un truc du genre

int length = 2000;
send(socket, &length, sizeof(int), 0);

tu comprend?
voilà et je voudrai pouvoir récuperer ca comme on le fait facilement en C++ en faisant genre

int length = *((int *) recvQueue.data());

recvQueue etant une string contenant cet int mais pas sous forme de caractères lisibles... enfin je sais pas si je me fai comprendre

merci
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
ok... je comprends mieux :D

dans ce cas utilise la classe Convert.

int length = Convert.ToInt32(recvQueue.data());

Sébastien FERRAND

Blog :
http://blogs.developpeur.org/sebmafate</FO< body>
Messages postés
13
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
7 avril 2006

bin justement ca ca marche pas !!
puisquil essai de convertir une chaine ascii en un nombre alors que recvQueue ne contient pas le nombre sous forme ascii mais sous forme binaire codé sur 4octets...

tu comprend mon probleme maintenant...
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Désolé de ne pas avoir répondu plus vite...

As-tu essayé, toujours avec Convert, la surcharge suivante :

Convert.ToInt32( string, fromBase )

--> Convert.ToInt32( recvQueue.Data(), 2 )

Sébastien FERRAND

Blog :
http://blogs.developpeur.org/sebmafate</FO< body>