wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 3

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Endian-ness des données
Conversation (Résolue) : Endian-ness des données
05-02-2008 23:36:17  Endian-ness des données #1
PaowZ (Membre)
Inscrit le : 04-02-2008
Messages: 16
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

Je dois composer avec des fichiers de données dont le format est du big-endian et donc, je dois les convertir en little-endian pour pouvoir en exploiter le contenu (ch'ui sur intel).
Donc, j'ai tenté d'utiliser la macro wxINT16_SWAP_ON_LE pour traiter ca.
Mais le compilo me renvoit: [Warning] statement has no effect

.. et en effet, l'éditeur hexa me raconte que rien n'a changé dans mes données.

V'là le bout de code en charge de ce changement

Code wxWidgets:

short* buffer = new short[(fileHGT->Length()/2)];
fileHGT->Read(buffer,(fileHGT->Length()/2));
for(unsigned int i=0;i<(fileHGT->Length()/2);i++)
  wxINT16_SWAP_ON_LE(buffer[i]);
 


Vous avez une idée ??

Merci bien.
05-02-2008 23:56:18  Re: Endian-ness des données #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

En fait, la macro wxINTxx_SWAP_ON_LE(wxINTxx) te renvoie la valeur convertie.
Donc, si tu ne ré-écris pas cette valeur dans le fichier ou dans un nouveau ficher (tu ne la récupères même pas), tu n'obtiendras aucun changement.
C'est, je pense, de là que vient le warning "statement has no effect : ce n'est pas une erreur, mais le compilo t'averti que la commande wxINT16_SWAP_ON_LE(buffer[i]); ne sert à rien.

Il faut juste mettre :

Code wxWidgets:

 
for(unsigned int i=0;i<(fileHGT->Length()/2);i++)
  buffer[i]=wxINT16_SWAP_ON_LE(buffer[i]);
 

Et lorsque le traitement est terminé, tu n'as plusqu'à ré-écrire les données dans le fichier (ou où bon te semblera).

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
06-02-2008 13:16:15  Re: Endian-ness des données #3
PaowZ (Membre)
Inscrit le : 04-02-2008
Messages: 16
Snippets: 0
Tutoriels: 0
Hors ligne
putain, mais quel âne... :S
Même pas j'ai pensé à affecter la valeur retournée par la macro, je pensais qu'elle agissait directement à l'adresse fournie en paramètre.. ce noob.. :D

Merci bien Xaviou.. ;)

Dernière modification par PaowZ (06-02-2008 13:16:27)

06-02-2008 22:27:55  Re: Endian-ness des données #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
C'est souvent les erreurs les plus basiques que l'on a le plus de mal à retrouver.

Bonne continuation à toi.
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Endian-ness des données