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# Discussion :

Problème de conversion en hexa


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2018
    Messages : 23
    Par défaut Problème de conversion en hexa
    Bonjour, j'ai écrit un programme en VB.NET et je suis en train de le convertir en C#. Dans mon programme en VB, j'extrais deux chiffres d'un string X
    D0 = Mid(X, 5, 1) je récupère dans X le chiffre "0" et D1 = Mid(X, 7, 1) je récupère dans X le chiffre "6"
    D0 = Chr(Asc(D0) - 48 et D1 = Chr(Asc(D1) + 48) puis je transforme mes deux caractères en un seul caractère au format hexadécimal par
    C0 = Chr(Asc(D0) * 16) et C0 = Chr(Asc(C0) + Asc(D1)) j'obtiens dans C0 la valeur 06 en hexadécimale qui correspond en ASCII à ACK ou en binaire à 0000 0110

    Quelqu'un peut-il m'aider à convertir ce code de VB.NET en c#.
    Je vous remercie d'avance.
    astvt.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    Mid c'est SubString()
    Chr ça pourrait être un Convert.ToChar()
    Asc ça pourrait être un Convert.ToInt32()

    ou il y a la possibilité d'ajouter une référence à Microsoft.VisualBasic

    Mais tu te rajoutes des étapes il me semble
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    D0 = Mid(X, 5, 1)
    D1 = Mid(X, 7, 1) ' pourquoi avoir sauter le caractère n°6 ? il y a peut-être une explication ??
    C0= CInt(D0 & D1) 'on concatène (=>"06") et on transforme en entier (6) (C0 est ici un entier)
    C1= Chr(C0) ' si on veut le caractère correspondant (C1 est ici un caractère ou une chaine)

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2018
    Messages : 23
    Par défaut Problème de conversion en hexa
    Merci UMFRED pour votre réponse.
    ' pourquoi avoir sauter le caractère n°6 ? il y a peut-être une explication ??
    oui dans le string X il y a un point de séparation des deux caractères.
    Je vais reprendre les trois représentations de Mid, Chr, et Asc en C# dans mon programme de conversion en C#.
    Je reviendrai ici pour donner mes résultats.Cordialement ASTVT.

  4. #4
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2018
    Messages : 23
    Par défaut Problème de conversion en hexa
    Bonjour, j'ai fait un tas d'essais du genre string hex = Bit.Converter.ToString(X); ou autre sans rien de concret.
    Je bloc sur l'obtention de la valeur C0 dans mon premier message.
    Ce que j’essaie de faire en C#:
    donnée D0 = 0 (chiffre 0 de valeur 30 en représentation hexa et 48 en décimale)
    donnée D1 = 6 (chiffre 6 de valeur 36 en représentation hexa et 54 en décimale)
    Donnée C0 = 06 en hexa
    Voir mon le début de mon message où j'ai mis les instructions en VB.net pour arriver à ce résultat.
    Je pense qu'en C# cela est possible, mais je n'est pas toutes les connaissances pour réaliser ce que je souhaite faire.
    Merci de votre aide.
    astv

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    ça serait mieux de mettre ton vrai code, plutôt que l'on doivent supposer le code que tu as utilisé.

    Citation Envoyé par astvt Voir le message
    donnée D0 = 0 (chiffre 0 de valeur 30 en représentation hexa et 48 en décimale)
    donnée D1 = 6 (chiffre 6 de valeur 36 en représentation hexa et 54 en décimale)
    Donnée C0 = 06 en hexa
    pour moi ça veut dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String D0="0";
    String D1="1";
    Int16 C0=Convert.ToInt16(D0+D1);
    Console.WriteLine(C0.ToString());
    Après si D0 et D1 sont des Char, il faudra les convertir en String via Char.ToString()

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2018
    Messages : 23
    Par défaut Problème de conversion en hexa
    Bonjour unfred.
    Merci pour ta réponse.
    Mon programme permet d'envoyer des données à un robot de perçage de CI de ma conception. le robot est construit autour d'un processeur Motorola MC6808.
    Le robot ne comprend que hexadécimale. Le rôle de mon programme est donc de convertir des données ASCII en hexadécimale. Exemple la valeur 6 doit être 06 en hexa ou 0000 0110 en binaire.
    Voici mon code:
    //ouverture du fichier3 *.tmp en entrée contenant les forets et les coordonnées
    FileStream fw1 = new FileStream(fichier3, FileMode.Open, FileAccess.Read);
    StreamReader sw1 = new StreamReader(fw1);
    X = sw1.ReadLine();
    while (X != null)
    {
    //recherche le caractère T dans .tmp
    A = "T";
    if (X.IndexOf(A) == 0)
    {
    //écrit dans .per le caractère T
    sr4.Write(A);
    //récupère la première valeur du diamètre du foret
    D0 = X.Substring(4, 1);
    //récupère la deuxième valeur du diamètre du foret
    D1 = X.Substring(6, 1);
    //assemble le diamètre du foret
    Int16 C0 = Convert.ToInt16(D0+D1); ----------------------------------->C0 = 6 ou 36 en hexa ce que je cherche à obtenir C0 = 06 et non 36 voila mon problème que je n'arrive pas à résoudre en C#
    //écrit dans .per la valeur du diamètre du foret en hexa
    sr4.Write(C0);
    // pour test ferme le fichier
    sr4.Close();
    }
    //recherche le caractère X début des coordonnées de perçage
    A = "X";
    //if (X.IndexOf(A) == 0) goto carX;
    }

    Cordialement
    astvt

Discussions similaires

  1. Problème de conversion byte en hexa
    Par Arnaud Malabeux dans le forum C#
    Réponses: 11
    Dernier message: 04/05/2010, 15h24
  2. Problème de conversion decimal vers Hexa
    Par Elbarto dans le forum C++
    Réponses: 1
    Dernier message: 06/02/2006, 19h37
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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