bonjour,
Je voudrais faire la convertion : chaine de caratère (variable string) => chaine en ASCII => chaine en binaire.
Comment faire (dans les deux sens) ?
bonjour,
Je voudrais faire la convertion : chaine de caratère (variable string) => chaine en ASCII => chaine en binaire.
Comment faire (dans les deux sens) ?
si j'ai bien compris tu veux récupérer le code ASCII des caracteres?
oui c'est ça et je veux les afficher en binaire.
Et fait, j'envoie des caratères sur le port COM1 de mon PC de cette manière :
Me.SerialPort1.Write("blablabla")
Ce que je voudrais, c'est afficher dans une textbox, le code binaire de la trame envoyé sur le port COM1 : pour celà je dois convertir les caratères en binaire + ajouter le bit de start, de stop et de parité.
En fait il suffit de prendre chaque caratceres de ton string et de les stocker une variable de type char[]. et pour les caracteres spéciaux il faut les déclarer en contante.
Une fois que j'ai mis mes caratères dans une variable char(), comment faut-il faire pour afficher la valeur binaire ?
Devrait résoudre certains de tes problèmes, hésite pas a explorer cette classe "Convert".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Byte toto = Convert.ToByte(MonChar);
« L’erreur est humaine, mais un vrai désastre nécessite un ordinateur »
si je fais Msgbox(Convert.ToByte(MonChar))
=> ça m'affiche une valeur numérique et non pas la valeur binaire : je dois pouvoir faire une fonction qui transforme ce chiffre en binaire mais il doit bien y avoir une methode plus simple, non ?
A mon avis c normal puisque implicitement la convertion doit être faites vers un entier pour l'affichage.
Mais si tu fait :
Tu auras la valeur Hexa afficher. Le type Byte peut être convertis dans tous les autres types (ou presque) et du coup l'affichage doit déclancher un cast...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MessageBos.show( byte1.ToString("X2", null) );
Je suppose que ca doit marcher comme ca.
personnellement je doit écrire des trame sur une liaison Serie et j'utilise un tableau de Byte.
Je fait la traduction de ma Trame pour l'affichage de la sorte :
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 public static String TrameToString(Byte[] pTrame) { String TrameFormatString = ""; for (int i = 0; i < pTrame.Length; i++) { TrameFormatString += ToHexString(pTrame[i]); if (i != (pTrame.Length - 1)) TrameFormatString += " "; } return TrameFormatString; } static String ToHexString(byte byte1) { return byte1.ToString("X2", null); }
« L’erreur est humaine, mais un vrai désastre nécessite un ordinateur »
si j'ai bien compris, ta fonction transforme ta trame en hexa (c'est pas ce que je voulais)
Par contre je viens de trouver une solution :
=> la convertion doit se faire assez rapidement avec cette methode mais ce qui est dommage c'est qu'il y a deux conversions effectuées (Char => Byte => String) : il doit bien y avoir une methode pour n'en faire qu'une ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dim MyChar As Char() Dim MaChaine As String Dim MaChaineBinaire As String MaChaine = "abcd" MyChar = MaChaine.ToCharArray MaChaineBinaire = "" For Each Element As Char In MyChar MaChaineBinaire += " " & Convert.ToString(Convert.ToByte(Element),2) Next Element Msgbox (MaChaineBinaire)
Dans le sens inverse, quelqu'un sait-il faire la convertion ? MaChaine = "1100001" => MonCaratere = "a"
Négatif, ma fonciton permet uniquement d'afficher Sous forme d'Hexa un tableau de Byte...
Rien de plus
« L’erreur est humaine, mais un vrai désastre nécessite un ordinateur »
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager