Casting pb de passage de c++ en C#

docteur_re Messages postés 13 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 avril 2006 - 30 avril 2005 à 16:15
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 5 mai 2005 à 11:11
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
2 mai 2005 à 13:39
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>
0
docteur_re Messages postés 13 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 avril 2006
2 mai 2005 à 19:41
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
2 mai 2005 à 22: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>
0
docteur_re Messages postés 13 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 avril 2006
3 mai 2005 à 00:25
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
5 mai 2005 à 11:11
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>
0
Rejoignez-nous