Convertir en int pour octet HEXADÉCIMAL en C#
J'ai besoin d'envoyer une chaîne Hexadécimale de plus de la série à un appareil, je le fais maintenant comme ceci:
byte[] c = new byte[3];
c[0] = 0x57;
c[1] = 0x30;
ComPort.Write(c,0,c.Length );
Maintenant, j'ai besoin de convertir une valeur de type int comme 30 à c[1] = 0x30
ou un int valeur de 34 donne c[1] = 0x34
.
J'espère que vous voyez ce que je veux dire.
Alors, comment puis-je gérer cela?
- Qu'allez-vous faire si la valeur est
100
? - les valeurs sont entre 30 et 39
- Je ne comprends pas la question. Pourriez-vous essayer de développer un peu?
- Est-il un autre moyen pour envoyer un HEX de commande par le port série, je viens de découvrir que je peux le faire sur le "byte[] c = new byte[3]" et par la suite avec ComPort.Write(c,0,c.La longueur );
- Vous devriez plutôt modifier votre entrée par exemple 48 de 30 de sorte que vous obtenez 0x30 à partir d'elle.
- Ce qui s'est passé à l'octet
c[2]
? Est est à dessein qu'il reste zéro? - raté c[2] c'est aussi une valeur, cependant ce que je peux changer le code:(byte)(48) et cela devrait me donner 0x30???
- Oui,
(byte)48
est la même que sa représentation hexadécimale(byte)0x30
. - nice il ne fonctionne pas de cette façon! merci beaucoup!!!!
Vous devez vous connecter pour publier un commentaire.
Ce format est appelé binary-coded decimal. Pour les nombres à deux chiffres, entier-diviser par dix et le multiplier par seize, puis ajouter le reste de la division par dix:
UInt4
ounibble
pourrait avoir fait de cette plus intuitive. Alors que l'on pouvait avoirnew nibble[6]
au lieu denew byte[3]
et ensuite utiliser0x4
avec0x5
au lieu de0x45
.Une autre façon de faire pourrait être
suppose de Données int=2821; est à envoyer sur le Port COM: