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

C++Builder Discussion :

Obtenir la repr�sentation hexa d'un d�cimal (conversion d'heure)


Sujet :

C++Builder

  1. #1
    Membre confirm� Avatar de marcootz
    Homme Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    159
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 159
    Par d�faut Obtenir la repr�sentation hexa d'un d�cimal (conversion d'heure)
    Salut � tous,
    J'ai besoin de convertir une valeur d�cimale en une chaine de type hexa. Je m'explique :
    Je re�ois dans une trame une valeur repr�sentant des minutes. Cette valeur est de type unsigned char soit 0x10 ou 16 lorsque je cast cette valeur en int.
    Mon probl�me est que j'aimerais r�cup�rer la valeur 10, qui correspond � mes minutes r�elles, sous forme d'integer ou d'ansistring peu importe.
    Savez vous comment faire �a ?
    Merci d'avance

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Ce que tu cherches s'appelle une repr�sentation BCD ([ame="http://fr.wikipedia.org/wiki/Binary_coded_decimal"]BCD[/ame]) du nombre, c'est souvent utilis� avec les afficheurs et les horloges temps r�el.

    Je n'ai pas l'API BCB en t�te, mais cherche "BCD" dans l'aide de BCB, il doit y avoir des fonctions de conversion d�j� existantes : du moins, il me semble bien en avoir d�j� vu avec Delphi...
    Sinon, au pire, c'est facile � recalculer une fois que l'on sait comment c'est cod�, ou � chercher sur le net avec le terme correct.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre confirm� Avatar de marcootz
    Homme Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    159
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 159
    Par d�faut
    Merci Mac Lak je vais chercher de ce cot� l�

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 415
    Par d�faut
    Salut !

    Si c'est du BCD dans ce cas :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    UINT v; // ou au minimum BYTE v;
    UINT d;
    UINT u;
    // extraction du digit des unités
    u = v & 0xF;
    // extraction du digit des dizaines (avec masque au cas où)
    d = (v / 16) & 0xF;
    // la valeur finale :
    n = (d * 10) + u;
    Pour effectuer l'extraction sur un BCD plus large, on extrait les digits au fur et � mesure en proc�dant par d�calages successifs :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    u = v & 0xF; v = v / 16; // prêt pour extraire d
    d = v & 0xF; v = v / 16; // prêt pour ...
    sec = u + (d * 10);
    //...etc...
    La division par 16 est �quivalente � un shift de 4 bits ( >> 4).

    A plus !

  5. #5
    Invit�
    Invit�(e)
    Par d�faut
    Il y a une unit� FMTBCD, et un type TBcd qui font cela.

    Pour convertir un BCD en entier, il y a des fonctions BcdToInteger(), et inversement IntegerToBcd(), et m�me un FormatBcd() qui ressemble furieusement au FormatFloat() usuel... ^

    Et puis toutes sortes de fonctions qui permettent de faire des calculs sur des nombres stock�s en Bcd (si tes donn�es d'origine ont cette forme, il n'est pas forc�ment n�cessaire de les convertir)

    Francois

  6. #6
    Membre confirm� Avatar de marcootz
    Homme Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    159
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 159
    Par d�faut
    Je m'en suis sorti avec le calcul de henderson. Merci � tous pour votre aide

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Obtenir la repr�sentation en base N d'un entier
    Par Vincent PETIT dans le forum T�l�charger
    R�ponses: 0
    Dernier message: 30/11/2010, 16h01
  2. R�ponses: 42
    Dernier message: 22/09/2010, 12h57
  3. Convert String represent Hexa en valeur D�cimal
    Par gdev7 dans le forum Langage
    R�ponses: 4
    Dernier message: 25/02/2008, 11h55
  4. [debutant] obtenir la repr�sentation binaire d'un code ascii
    Par coco21 dans le forum Collection et Stream
    R�ponses: 4
    Dernier message: 08/11/2007, 09h06
  5. Repr�sentation hexa d'un nombre n�gatif
    Par sone47 dans le forum MATLAB
    R�ponses: 3
    Dernier message: 21/02/2007, 17h26

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