Oui, mais ces fonctions changent l'endianess des chiffres (entiers ou flottants). Ce que je souhaite faire, c'est que un groupe de 4 octets (venant du fichier binaire créé par un système embarqué) soit lu comme, par exemple, un entier sur le système hote, quelque soit l'architecture du système hote.
Donc je commence par placer les octets dans le bon ordre (avec mes fonctions ShortSwap, IntSwap, FloatSwap, etc car les htonl et consort m'ont donné beaucoup trop de fil à retordre), puis ensuite il faut que je fasse interpreter les octets comme étant un entier codé sur 4 octets.
Si sur ma plateform "int" est défini comme étant sur 4 octets, je fait mon simple resultat=(int)(......). Idem pour les floats, etc. Mais si d'aventure ma plateforme code ses "short int", "int", "float" de façon différente à ce à quoi je m'attend, alors mon programme ne marche plus. Donc je me dis qu'il doit bien y avoir une façon portable de faire ceci, ie une façon qui ne dépende pas des conventions utilisées sur chaque plateforme!
Mathias
PS: pour information, j'ai déja traité le cas de flottants codés sur 2 octets ainsi que sur 4 octets mais avec une représentation non-traditionelle, tout à la main (ie: masques sur les bits, décalages de bits, calcul de la mantisse et de l'exposant, etc).
[^] # Re: Voir du coté des fonctions réseau
Posté par Mathias Bavay (site web personnel) . En réponse au message types (float, int) indépendant de l'architecture?. Évalué à 2.
Donc je commence par placer les octets dans le bon ordre (avec mes fonctions ShortSwap, IntSwap, FloatSwap, etc car les htonl et consort m'ont donné beaucoup trop de fil à retordre), puis ensuite il faut que je fasse interpreter les octets comme étant un entier codé sur 4 octets.
Si sur ma plateform "int" est défini comme étant sur 4 octets, je fait mon simple resultat=(int)(......). Idem pour les floats, etc. Mais si d'aventure ma plateforme code ses "short int", "int", "float" de façon différente à ce à quoi je m'attend, alors mon programme ne marche plus. Donc je me dis qu'il doit bien y avoir une façon portable de faire ceci, ie une façon qui ne dépende pas des conventions utilisées sur chaque plateforme!
Mathias
PS: pour information, j'ai déja traité le cas de flottants codés sur 2 octets ainsi que sur 4 octets mais avec une représentation non-traditionelle, tout à la main (ie: masques sur les bits, décalages de bits, calcul de la mantisse et de l'exposant, etc).