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 :

HexToBin


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Points : 32
    Points
    32
    Par défaut HexToBin
    Bonjour, je cherche de l'information sur la fonction HexToBin.

    Lorsque j'esasie de la faire, j'obtiens un 1 dans mon Label.
    Notez que j'ai pris FD comme valeur hexa à titre de test seulement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     char hex[]="FD",bin[]="";
     Label1->Caption=HexToBin(hex,bin,16);
    S'il y a une façon de passer directement de décimal à binaire, j'aimerais bien le savoir.

    Merci

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    extern PACKAGE int__fastcall HexToBin(char *Text, char *Buffer, int BufSize);

    Description

    Appelez HexToBin pour convertir la chaîne hexadécimale Text en la valeur binaire qu'elle représente.

    Text est la représentation sous forme de chaîne d'une valeur hexadécimale.

    Buffer renvoie la valeur résultante en binaire.

    BufSize donne la taille de Buffer. Text doit pointer sur au moins 2*BufSize caractères hexadécimaux car deux caractères hexadécimaux représentent un octet.

    HexToBin renvoie le nombre de caractères qui n'ont pas été utilisés dans Buffer parce que Text ne contenait aucun caractère hexadécimal valide ('0'..'f').

    Remarque*: Le nombre hexadécimal doit utiliser des caractères en minuscules*; HexToBind ne reconnaît pas les majuscules.
    Donc dans ton cas vus que la longueur est de 16 cars => déclare bin[16] pour réserver cet espace mémoire...et ne mettre que des minuscules...

    de plus c'est la valeur et non le code retour que tu souhaites donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char hex[]="fd";
    char bin[17]; 
    HexToBin(hex,bin,16));
    Label1->Caption = String(bin);

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Maintenant si c'est du décimal direct vers de l'ascii en représentation binaire, il faut transformer tous les bits en valeur affichable un truc du genre:
    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
    23
    24
    25
     
    AnsiString IntToBin(unsigned int Valeur, int NbBit)     // convertion Int to Bin  (16 bits max)
    {
      int i;
      unsigned int Flag = 0x0001;
      for(i= 0; i < (NbBit-1); i++)      // Mise à 1 du masque
        {
        Flag = Flag << 1;
        Flag = Flag | 0x0001;
        }
      Valeur = Valeur & Flag;
      Flag = 0x0001;
      Flag = (Flag << (NbBit-1));
     
      AnsiString Data = "";
      for(i= 0; i<NbBit; i++)
        {
        if ((Valeur & Flag) != 0)
            Data += '1';
        else
            Data += '0';
        Flag = Flag >> 1;
        }
      return Data;
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Woah merci beaucoup!

  5. #5
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 937
    Points : 2 021
    Points
    2 021
    Par défaut
    Bonjour, je n'arrive pas à utiliser correctement cet fonction moi aussi

    si je reprends l'exemple donné dans la solution proposée par Fbartolo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char hex[]="fd";
    char bin[17]; 
    HexToBin(hex,bin,16));
    Label1->Caption = String(bin);
    J'obtiens une sorte de caractère bizaroide proche du y avec un accent

    Moi je cherche à obtenir un entier : 253 , la valeur Decimale de la valeur hexadecmale 0xfd

    Merci par avance
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

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

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