Laden...

int in hex Byte umwandeln

Erstellt von Simon Heinzmann vor 15 Jahren Letzter Beitrag vor 15 Jahren 4.417 Views
Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren
int in hex Byte umwandeln

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

K
593 Beiträge seit 2007
vor 15 Jahren

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

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Simon Heinzmann,

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

herbivore

K
593 Beiträge seit 2007
vor 15 Jahren

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

Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

return (byte)p;

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

Gruss
Simon

5.657 Beiträge seit 2006
vor 15 Jahren

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

1.361 Beiträge seit 2007
vor 15 Jahren

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

Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

Ich muss den hexadezimalen Wert über den seriellen Port senden

 serialPortLauflicht.Write(new byte[] { 0x55, intToHexByte(led), intToHexByte(0), 0x0D }, 0, 4);
5.657 Beiträge seit 2006
vor 15 Jahren

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

49.485 Beiträge seit 2005
vor 15 Jahren

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