Convertion short* to char* et inversement

Signaler
Messages postés
1
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
6 janvier 2005
-
Messages postés
48
Date d'inscription
lundi 29 novembre 2004
Statut
Membre
Dernière intervention
16 mars 2005
-
au secours help me

je cherche a convertir un short* en char * en C++ pour le transmetre sur un reseau UDP
bien entendu j ai essaye de faire un transtipage et la conversion terme a terme.

merci d avance

5 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Il s'agit de passer de caractères UNICODE à des caractères ANSI ?
si oui voir du coté de MultiByteToWideChar et WideCharToMultiByte sous Windows.
Messages postés
209
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
14 août 2007

Salut,

Ce qui suit n'est pas du C++ mais de l'ANSI C, mais si ça peut dépanner...

#include <stdlib.h>


int main(int argc, char** argv)
{
short* number;
char* str = (char*)malloc(16);
number = 89;
itoa(number, str, 10);
printf("%d %s\n", number, str);
return(0);
}

Ciao.
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
short* number;
...number 89> erreur, number est déclarer en tant que pointeur sur short, il faudrait alors initilisation le pointeur et lui attribuer la valeur coomme suit *number=89

par contre pour transformer un short en char* c'est bien itoa.
Messages postés
209
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
14 août 2007

Erreur, en effet... d'solé !!
Messages postés
48
Date d'inscription
lundi 29 novembre 2004
Statut
Membre
Dernière intervention
16 mars 2005

En C tu peux utiliser les unions

main(){

union {

unsigned short number;

unsigned char car [sizeof(short)];

} n;

// declarer en non signe au moins le tableau de char.



// exemple d'utilisation
n.number = 0x123456;

fprintf ( stdout,"%d %d\n",n.car[0], n.car[1]);



}



Attention aux surprises, si tu utilise comme je le pense un Intel ou equivalent tes bytes seront inverses, a toi de swapper.


Yves