begin process at 2008 07 20 09:34:36
1 213 150 membres
71 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Conversion char* en float, et float en char* [ Algorithme / Compression, Split & Cryptage ] (MrAzerty)

Conversion char* en float, et float en char* le 16/06/2006 10:29:45

MrAzerty

Mon problème est simple, je souhaie pouvoir convertir une chaine de caractères contenant un réel ("78.46", par exemple),
à la norme IEEE 754 (comme les float) , et cela sans utiliser de float, ni de "%f", ni rien qui touche de près ou de loin au type float.
La valeur devra donc ensuite être mémorisée sur 32bits, dans un unsigned long par exemple.
Merci par avance pour votre aide...


Re : Conversion char* en float, et float en char* le 16/06/2006 11:04:23

ymca2003

Pourquoi tu veux pas te servir  float ? c'est pourtant plus simple :

#include <math.h>
char s[] = "78.46";
float val = (float)atof(s);

pour récuprer les 32 bits du format IEEE :
unsigned long ieee = *((long*)&val);

Si tu veux recoder atof, tu peux mais sans utiliser le type float c'est un brin compliqué


Re : Conversion char* en float, et float en char* le 16/06/2006 18:18:15

MrAzerty
En fait mon code ne sera pas compilé pour un pc mais pour un calculateur 16 bits (sc12). Le types float est mal géré par ce dernier, je me suis rendu compte que de nombreux dépassements mémoires aparaissaient, dus à cette mauvaise gestion... En rendant une visite sur le site web du constructeur (et en cherchant quelques heures), je me suis aperçu qu'il existaient une solution, mais non apliquable au C++ pour des raisons trop longues à expliquer (pointeurs sur des fonctions C,etc).
Or, les données doivent impérativement être stockées au format IEEE 754, car le programme comunique en liaison série avec un esclave Modbus, utilisant cette norme.

Donc, je résume:
-Impossiblilité d'utiliser le type float, ni les "atof()" sous peine de dépassement mémoire et donc de plantage aléatoire
-Nécéssité de stocker quand même les données au format IEEE 754

J'ai éssayé de faire un algorithme à partir d'explications, comme celles-ci .
Cela me parait extrêmement compliqué, dans mon cas...

J'ai tout de même réussi à compiler une version stable, utilisant les floats. Ce projet sera présenté à un jury dans le cadre de mon bts très prochainement, je pense que je vais m'en tenir à cette version.






Re : Conversion char* en float, et float en char* le 17/06/2006 12:13:14

deck_bsd
Membre Club
utilise ssprintf ou sscanf si libc standart,  ou wsprintf  si win32.

Re : Conversion char* en float, et float en char* le 17/06/2006 12:13:33

Classé sous : conversion, exemple, char, float

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS