IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Hexa vers Décimal [WD20]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 52
    Points : 31
    Points
    31
    Par défaut Hexa vers Décimal
    Bonjour à tous

    Je suis en train de développer une application pour Android avec WM20, cette application reçoit des trames dans lesquelles je dois récupérer plusieurs valeurs pour les exploiter. Dans mon programme ces trames sont au format 'Chaîne' et sont en hexadécimal, je ne rencontre aucun difficulté à récupérer la plupart des données qui me sont utiles mais je bloque sur une valeur en particulier :

    Il s'agit d'un double codé sur 8 octets, j'ai donc la valeur en hexadécimal et mon but est de la récupérer en décimal, exemple :
    40 41 EF 40 A0 00 00 00 donnerait : 35.8691596985

    Si quelqu'un pouvait m'aider ça serait sympa, merci beaucoup

  2. #2
    Membre actif
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 270
    Points
    270
    Par défaut
    Bonjour,

    J'ai testé ce petit bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    res est un entier sans signe
    valchaine est une chaîne
    val1 est une chaîne
     
     
    valchaine="40 41 EF 40 A0 00 00 00"                    // contient la chaine hexa a convertir
     
     
    POUR i = 1 A 8
    	val1=ExtraitChaîne(valchaine,i," ")
    	res=HexaVersEntier(val1)
    	Trace(res)
    FIN
    et on obtient

    64
    65
    239
    64
    160
    0
    0
    0

    J'espère que ça t'aideras, j'ai quand même un doute au vu du résultat souhaité que tu mentionnes dans ton post

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Bonjour, je te remercie pour ta réponse.
    En fait ce n'est pas tout à fait ça que je souhaite comme résultat.
    Ici tu as converti chacun des hexa en entier, moi ce que je souhaite obtenir c'est un réel de l'ensemble des 8 octets.
    Je ne sais pas si c'est très clair

    En tout cas merci pour ton aide !

  4. #4
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    "40 41 EF 40 A0 00 00 00" => "100000001000001111011110100000010100000000000000000000000000000"

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    C'est normal que Romu ne puisse pas te donner la réponse souhaitée car tu ne nous à pas donné le format de ton Hexa. Est-ce du Signe + Mantisse + Exposant, Mantisse + exposant, autre ?

    On ne peut pas deviner...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Je comprends, veuillez m'excuser pour le manque de précision

    La seule information que je possède c'est cet exemple : 0x4041EF40A0000000 = 35.8691596985

    Je vais essayer de me renseigner.

  7. #7
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Salut
    Voici un sujet complémentaire au problème posé.

  8. #8
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    727
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 727
    Points : 1 646
    Points
    1 646
    Par défaut
    Bonjour,

    A la louche, et en s'interdisant les opérateurs & | << >> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    nSource			est entier sur 8 = 0x4041EF40A0000000
    rDestination	est réel sur 8
    rDivMantisse	est réel sur 8 = 0x10000000000000
    SI nSource[53 A 63] = 0x7FF ALORS
    	rDestination = 1.0 / 0.0
    SINON
    	rDestination = nSource[1 A 52]
    	rDestination = rDestination / rDivMantisse
    	SI nSource[53 A 63] <> 0x000 ALORS
    		rDestination = 1.0 + rDestination
    	FIN
    	POUR i = nSource[53 A 63] - 1023 A -1 PAS 1
    		rDestination = rDestination / 2.0
    	FIN
    	POUR i = nSource[53 A 63] - 1023 A 1 PAS -1
    		rDestination = rDestination * 2.0
    	FIN
    FIN
    SI nSource[64] ALORS
    	rDestination = -rDestination
    FIN
    Trace(rDestination)
    Quand la fonction Transfert est disponible, il suffit de faire un transfert de l'entier vers le réel.

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    je n'ai pas windev mobile mais comme j'ai vu que :
    Il est possible de saisir du code Java :
    dans les applications Java générées avec WinDev.
    dans les applications Android générées avec WinDev Mobile.
    Vous pouvez ainsi créer des procédures globales entièrement en Java.
    en java la conversion peut se faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     String s = "4041EF40A0000000";
     double d = Double.longBitsToDouble(Long.parseLong(s,16));
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Je tenais à vous remercier vos réponse m'ont beaucoup aidé

    J'ai utilisé la méthode de jurassic pork

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PIC 16F877] Hexa vers décimal
    Par TheFullMetal dans le forum C
    Réponses: 1
    Dernier message: 17/01/2009, 19h57
  2. convertir string vers décimal
    Par salmoucha dans le forum Langage
    Réponses: 3
    Dernier message: 14/04/2008, 13h52
  3. Conversion hexa vers double
    Par EnigmuS dans le forum C
    Réponses: 13
    Dernier message: 16/05/2007, 14h06
  4. Convertir d'hexadécimal vers décimal
    Par WebPac dans le forum Delphi
    Réponses: 4
    Dernier message: 05/09/2006, 12h01
  5. [PIC 16F84] Conversion source hexa vers asm
    Par Page35 dans le forum Autres architectures
    Réponses: 2
    Dernier message: 08/12/2005, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo