Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
int in hex Byte umwandeln
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

int in hex Byte umwandeln

beantworten | zitieren | melden

Hi,
ich hab einen Timer der zählt von 118 auf 0 runter.

Hier die Funktion die die int in hex byte Werte umwandelt

        private byte intToHexByte(int p)
        {
            // Umwandlung von int zu einem Hex Wert der als Byte an das Lauflicht gesendet wird
            string valueHex = String.Format("{0:x}", UInt64.Parse(Convert.ToString(p)));
            return Convert.ToByte(valueHex);
        }

bei 111 = 6f kommt diese Fehlermeldung:

Fehlermeldung:
System.FormatException wurde nicht behandelt.
Message="Die Eingabezeichenfolge hat das falsche Format."

Kann mir jemand weiterhelfen, ich steh total aufm Schlauch.

Gruss
Simon
private Nachricht | Beiträge des Benutzers
Kaji
myCSharp.de - Member



Dabei seit:
Beiträge: 593
Herkunft: Clausthal-Zellerfeld

beantworten | zitieren | melden

Hallo,

du kannst einen String wie 6F nicht einfach in Byte umwandeln Daher wird er dort meckern. Er geht normal von einem Decimal system aus also von 0-9 nich von 0-F. Deswegen musst du von String zu Byte auch Convertieren


Gruß Daniel
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Simon Heinzmann,

sehr merkwürdige Funktion, wo es doch ein return (byte)p; tun würde.

herbivore
private Nachricht | Beiträge des Benutzers
Kaji
myCSharp.de - Member



Dabei seit:
Beiträge: 593
Herkunft: Clausthal-Zellerfeld

beantworten | zitieren | melden

Hallo,

Zoooong das hab ich natürlich total übersehen ^^ Ja einfach nen Typecast auf den int und schon hast du dein Byte.. Aber du solltest vorher ein TryParse machen oder so weil Byte ja nur bis 255 kann. Nur als vorsicht


Gruß Daniel
private Nachricht | Beiträge des Benutzers
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Zitat von herbivore
return (byte)p;
Das "return (byte)p;" wandelt mir einen Dezimalen Integer in ein hexadezimales Byte um??

Gruss
Simon
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Was ist denn der Unterschied zwischen einem dezimalen und einem hexadezimalen Byte??

Den Hexadezimalen Wert kannst du nur durch einen String darstellen.
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
zommi
myCSharp.de - Member

Avatar #avatar-2617.png


Dabei seit:
Beiträge: 1.361
Herkunft: Berlin

beantworten | zitieren | melden

Hi,

sowohl "Integer" wie auch "Byte" sind intern als Dual-Zahl repräsentiert.

In welchem Format sie bei uns auf dem Bildschirm erscheinen / in einen String kommen ...etc ist davon vollkommen unabhängig und kann - wie du auch schon selbst getan hast - mit zahlreichen Befehlen gesteuert werden.

String.Format("{0:x}"...

beste Grüße
zommi
private Nachricht | Beiträge des Benutzers
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Ich muss den hexadezimalen Wert über den seriellen Port senden

 serialPortLauflicht.Write(new byte[] { 0x55, intToHexByte(led), intToHexByte(0), 0x0D }, 0, 4);
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

was ist denn der Unterschied zwischen


serialPortLauflicht.Write(new byte[] { 0x55, ...}, 0, 4);

und


serialPortLauflicht.Write(new byte[] { 85, ...}, 0, 4);

?
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Simon Heinzmann,

die Antwort hast du schon bekommen. Es gibt keine HexBytes. Das sind aber Grundlagen. Schau es dir in einem Buch an.

herbivore
private Nachricht | Beiträge des Benutzers