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.
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.
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
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
Problème de conversion en hexa
Bonjour umfred.
Je voudrais transformer le caractère ASCII "6" en hexa 0x06 soit l'équivalent de ACK en ASCII.
sr4 est mon fichier de sortie qui sera envoyé à mon robot par le port série du pc.
Voici la définition en VB pour le ficier de sortie : FileOpen(1, fiche + ".per", OpenMode.Output, OpenAccess.Default, OpenShare.Shared)
et en C#
FileStream fs4 = new FileStream(fichier4, FileMode.Create, FileAccess.Write);
StreamWriter sr4 = new StreamWriter(fs4);
Si vous le souhaitez, je peux joindre mon programme en VB que je cherche à refaire en C#.
Cordialement
astvt