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

VC++ .NET Discussion :

Calcul String (valeur Hexa) -> double puis double -> char *


Sujet :

VC++ .NET

  1. #1
    Membre actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Points : 275
    Points
    275
    Par défaut Calcul String (valeur Hexa) -> double puis double -> char *
    Bonjour,

    Bon tt d'abord j'explique la situation, je dois réaliser une IHM permettant la gestion simplifier d'un compteur de goutte d'une tête d'impression.

    J'ai donc une IHM ou l'utilisateur rentre 3 String qui correspondent à la valeur seuil d'encre "bas", "tres bas" et "vide". Les Strings que l'utilisateurs entrent sont des valeurs en Hexadécimal, hors il faut que je puisse calculer à quel pourcentage correspond la valeur "tres bas" par rapport a la valeur "vide".

    Exemple :

    valeur "vide" : 3D0900
    valeur "tres bas" : 30D400
    "tres bas" correspond à 80 % de "vide"


    J'ai donc une suite de conversion a faire avec des calcules par la même occasion...ensuite affichage (mais ca devrait pas être un probléme). Et je sais absolument pas comment faire.
    J'suis loin d'être un expert, seulement un passionné.
    L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)

  2. #2
    Membre actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Points : 275
    Points
    275
    Par défaut
    Ce qui serait génial ca serait de convertir ma String en double (donc en entier) puis de faire mon calcul... Mais je sais pas comment non plus, j'ai un peu de mal avec ce genre de chose.

    Ca donnerait un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    String Vide = gcnew String("3D0900");
    double double_Vide;
     
    double_Vide = Convert::ToDouble(Vide);
    où double_Vide contiendrait 4000000.

    Bien evidemment j'ai déjà essayé le code cité et j'obtiens 0.00000 dans double_vide.
    J'suis loin d'être un expert, seulement un passionné.
    L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    j'aime bien ce passage
    Citation Envoyé par ben_ghost
    convertir ma String en double (donc en entier)
    regarde cet exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        String ^bin = "1111";
        int decimal = Convert::ToInt32(bin,2);
        String ^hexa = Convert::ToString(decimal, 16);
        Console::WriteLine("binaire = {0}\ndécimal = {1}\nhexadécimail = {2}", bin, decimal, hexa);
    tu peux t'inspirer du principe

  4. #4
    Membre actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Points : 275
    Points
    275
    Par défaut
    A oui... C'est plus simple que ce que j'ai fait mais je crois que c'est plus du C du mal encore a me faire au C++ je vous mets quand mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    double OwnFonction::RecupCaract(char * caractere)
    {
    	double total = 0;
    	double C1 = 0;
    	double C2 = 0;
    	switch (caractere[0])
    	{
    		case '0' :	C1 = 0;		break;
    		case '1' :	C1 = 1;		break;
    		case '2' :	C1 = 2;		break;
    		case '3' :	C1 = 3;		break;
    		case '4' :	C1 = 4;		break;
    		case '5' :	C1 = 5;		break;
    		case '6' :	C1 = 6;		break;
    		case '7' :	C1 = 7;		break;
    		case '8' :	C1 = 8;		break;
    		case '9' :	C1 = 9;		break;
    		case 'A' :	C1 = 10;	break;
    		case 'a' :	C1 = 10;	break;
    		case 'B' :	C1 = 11;	break;
    		case 'b' :	C1 = 11;	break;
    		case 'C' :	C1 = 12;	break;	
    		case 'c' :	C1 = 12;	break;
    		case 'D' :	C1 = 13;	break;
    		case 'd' :	C1 = 13;	break;
    		case 'E' :	C1 = 14;	break;
    		case 'e' :	C1 = 14;	break;
    		case 'f' :	C1 = 15;	break;
    		case 'F' :	C1 = 15;	break;
    	}
    	switch (caractere[1])
    	{
    		case '0' :	C2 = 0;		break;
    		case '1' :	C2 = 1;		break;
    		case '2' :	C2 = 2;		break;
    		case '3' :	C2 = 3;		break;
    		case '4' :	C2 = 4;		break;
    		case '5' :	C2 = 5;		break;
    		case '6' :	C2 = 6;		break;
    		case '7' :	C2 = 7;		break;
    		case '8' :	C2 = 8;		break;
    		case '9' :	C2 = 9;		break;
    		case 'A' :	C2 = 10;	break;
    		case 'a' :	C2 = 10;	break;
    		case 'B' :	C2 = 11;	break;
    		case 'b' :	C2 = 11;	break;
    		case 'C' :	C2 = 12;	break;
    		case 'c' :	C2 = 12;	break;
    		case 'D' :	C2 = 13;	break;
    		case 'd' :	C2 = 13;	break;
    		case 'E' :	C2 = 14;	break;
    		case 'e' :	C2 = 14;	break;
    		case 'f' :	C2 = 15;	break;
    		case 'F' :	C2 = 15;	break;
    	}
    	total = (C1 * 16) + C2;
    	return total;
    }
     
    double OwnFonction::ConvPtrCharToDouble(char *chaine , int Nb)
    {
    	int i;
    	double total = 0;
    	int octet = 0;
    	char * tanpom;
    	if ((Nb %2) == 0)
    	{
    		for (i= Nb-2;i>=0;i-=2)	
    		{
    			total += OwnFonction::RecupCaract(chaine+i) * Math::Pow( 256, octet);
    			octet++;
    		}
    	}
    	else
    	{
    		tanpom = (char *) malloc((strlen(chaine) + 2) * sizeof(char));
    		strcpy(tanpom+1,chaine);
    		tanpom[0] = '0';
    		for (i= Nb-1;i>=0;i-=2)	
    		{
    			total += OwnFonction::RecupCaract(tanpom+i) * Math::Pow( 256, octet);
    			octet++;
    		}
    	}
    	return total;
     
    }
    On fait au final appelle a la fonction OwnFonction::ConvPtrCharToDouble() et ça marche mais je pense que je vais la mettre de coté... lol un peu lourd comme code.

    Merci nico
    J'suis loin d'être un expert, seulement un passionné.
    L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    euh ... ca fait peur

    surtout le beau malloc qui n'est pas désalloué ... j'espere que tu feras pas trop de conversion

  6. #6
    Membre actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Points : 275
    Points
    275
    Par défaut
    Bien vu pour le malloc... lol Bon j'apprend pardonnable donc ... Ta méthode est nettement plus pratique, merci
    J'suis loin d'être un expert, seulement un passionné.
    L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/02/2010, 17h28
  2. Recuperer valeur d'une cellule sur double clic sur la ligne
    Par boboss123 dans le forum Composants
    Réponses: 2
    Dernier message: 18/01/2010, 08h54
  3. Réponses: 4
    Dernier message: 15/06/2009, 06h02
  4. Convert String represent Hexa en valeur Décimal
    Par gdev7 dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2008, 11h55
  5. Valeur en octet du type double
    Par Kemanke dans le forum Visual C++
    Réponses: 3
    Dernier message: 18/04/2007, 13h46

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