Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
wahrscheinlich ist das jetzt hier eine Anfängerfrage, aber ich finde nichts im Forum.
Ich habe hier einen String, der die Länge X hat. Diese Länge liegt mir als Integer vor.
Wie kann ich nun die Länge X (hier im Beispiel jetzt 22 Zeichen) einfach in die Form (hex) 16 00 umformen?
Mit den Typecasts komme ich ich auf "0000 0016" diesen Wert müsste ich nun umstellen auf "1600 000" und dann die vier Nullen am Schluss abschneiden.
Gibt es dafür einen einfacheren Weg?
(17.04.2012 22:16 )angry_Nameless schrieb: Wie kann ich nun die Länge X (hier im Beispiel jetzt 22 Zeichen) einfach in die Form (hex) 16 00 umformen?
Mit den Typecasts komme ich ich auf "0000 0016" diesen Wert müsste ich nun umstellen auf "1600 000" und dann die vier Nullen am Schluss abschneiden.
Du hast sicher deine Gründe...aber die Form mit den führenden Nullen ist doch korrekt! Warum willst du die Nullen hinten? Das ist doch einfach falsch...
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
18.04.2012, 06:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2012 06:40 von angry_Nameless.)
ich habe mich vielleicht etwas unglücklich ausgedrückt.
Ich beschreibe mein Problem jetzt etwas genauer:
Ich muss einer Maschine einen Hexadezimalstring übergeben, den diese dann auswertet. Der String besteht aus 2 mal 2 (hex) Byte Befehlsstring (z.B.:0032 3134), dann angefügt der Fehlercode (z.B.: 0000) und danach die Befehlslänge, die sich aus der Länge des BEfehlsinhalts errechnen soll. Also wenn der Befehlsinhalt "mach" wäre, dann hexadezimal "6D61 6368 ". Leider verlangt das Progamm immer ein "Doppelbyte" also wäre "mach" = "6D00 6100 6300 6800".
Die Länge dieses "mach" muss auch in den String also so (8 ByteLänge =) : 0800
Nur leider bekomme ich aus der Funktion "Länge des Strings" die "8" und nach einer Typumwandlung, damit ich es in den Gesamtstring eingliedern kann bekomme ich dann :´"3800"
bei einen 16 Char langen String bekäme ich dann "3136" statt "1600"
Mir würde ja schon ausreichen, dass es Hexadezimal "08" ausgibt. Die zwei Nullen sind ja schnell hinzugefügt.
Hoffe, dass das nun verständlicher war.
Warum das Programm, das den String erwartet die Nullen hinten will, kann ich leider nicht beantworten. Vielleicht ist es nur ein Steuerzeichen, das der Anlage sagt, dass es jetzt mit dem nächsten Abschnitt weiter geht.
Wie kann ich die Länge eines Strings als Hexadezimalstring anzeigen.
Zur Zeit:
1. Länge des Strings 22 Zeichen (INT)--> ergibt einen (String) 16 --> ergibt (HexString) 3136
2. Länge des Strings 22 Zeichen (INT)--> ergibt einen (DezimalString) 22 --> ergibt (HexString) 3232
Es muss doch möglich sein eine Zahl in einen HexString zu wandeln:
22 Zeichen (INT) = 0016 (HexString)
18.04.2012, 08:10 (Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2012 08:22 von A.Berndsen.)
Hallo,
entweder stelle ich meine Frage zu dumm, oder die Lösung ist zu einfach, so dass keiner von euch drauf kommt
Im Anhang ein Bild zum Vorschlag von Jens. Dort sollte eigentlich in Hexadezimaler Anzeige "7B" stehen, das ist aber bei der Funktion in NORMALER Anzeige.
Die Funktion von Jens macht aus einer Zahl einen String, der in der normalen Anzeige 7B ausgibt. Das ist aber leider ein ASCII Code der dann bei der Übermittlung "3742" ergibt und eben nicht 7B.