LabVIEWForum.de
Zahl in Hex darstellen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Zahl in Hex darstellen (/Thread-Zahl-in-Hex-darstellen)

Seiten: 1 2


Zahl in Hex darstellen - angry_Nameless - 17.04.2012 22:16

Hallo zusammen,

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?

Danke für eure Mühen.


RE: Zahl in Hex darstellen - NWOmason - 18.04.2012 05:28

(17.04.2012 22:16 )angry_Nameless schrieb:  Gibt es dafür einen einfacheren Weg?

Für die Darstellung von Hexadezimalen Zahlen musst du nichts umrechnen, sondern lediglich den Indicator auf Hex umstellen:

[attachment=39487]

Beste Grüße,
NWO


RE: Zahl in Hex darstellen - Achim - 18.04.2012 06:10

(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.


RE: Zahl in Hex darstellen - angry_Nameless - 18.04.2012 06:38

Hallo,

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.

Danke für eure Mühe


RE: Zahl in Hex darstellen - angry_Nameless - 18.04.2012 07:38

Ganz einfach beschrieben ist mein Problem dieses:

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)


RE: Zahl in Hex darstellen - A.Berndsen - 18.04.2012 08:10

(18.04.2012 07:38 )angry_Nameless schrieb:  Es muss doch möglich sein eine Zahl in einen HexString zu wandeln:
22 Zeichen (INT) = 0016 (HexString)

Klar geht das.
[attachment=39492]

Wobei ich gestehen muß, je mehr Du schreibst, umso weniger verstehe ich. Wink

Grüße
Andreas


RE: Zahl in Hex darstellen - THL - 18.04.2012 08:13

Wenn ich dich recht verstanden habe, sollte dies dein Problem lösen.


RE: Zahl in Hex darstellen - angry_Nameless - 18.04.2012 10:39

Smile Vielen DAnk für eure Hilfe, leider ist mein Problem immer noch nicht gelöst.

Labview übermittelt ja nicht einen String "123", sondern AscII -Codiert eine "31" (siehe Bild mit Hexadezimaler Anzeige)

Ich will aber die "1" als Hexadezimalanzeige 01 haben.

Oder die dezimal 17 als hexadezimalanzeige 11.

Problem ist nicht die Anzeige als hexa-Zahl, sondern die Umwandlung zum String und dann in die Hexa-Anzeige.

also Integer 17 = String (in Hexadezimalanzeige) 11


RE: Zahl in Hex darstellen - jg - 18.04.2012 10:53

Und hier gibt es die fertige Funktion dafür:

Number to Hexadezimal String

Gruß, Jens

EDIT: Hast du dir auch das VI von A. Berndsen angeschaut? Auch das wandelt eine Integer Zahl in einen Hex-String!


RE: Zahl in Hex darstellen - angry_Nameless - 18.04.2012 11:02

Hallo,
entweder stelle ich meine Frage zu dumm, oder die Lösung ist zu einfach, so dass keiner von euch drauf kommt Smile

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.