LabVIEWForum.de
Hex Zahl aus String in konvertieren - Druckversion

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



Hex Zahl aus String in konvertieren - hanno - 05.07.2007 08:40

Hi Zusammen,

Ich bekomme von einer Schrittmotorensteuerung drei HEX-Zahlen in einem String, der wiefolgt formatiert ist:
"AAAAAABBBBBBCCCCCC"
die Drei Zahlen liegen im Zweierkomplement vor. Gibt es eine Funktion in LV mit der eine 6Byte lange Zahl aus einem String gelesen werden kann? Vielen Dank für eure Hilfe.

Hanno.


Hex Zahl aus String in konvertieren - VDB - 05.07.2007 09:15

Hallo,

bitte die Suchfunktion benutzen, das Thema Hex-Strings von Steuerung XYZ ist im Forum schon 1000-mal behandelt worden.

Kurz gesagt: String unterteilen (Stringfunktionen) in den 3 Zahlenstrings, diese konvertieren von Hex-string -> Number.

VDB


Hex Zahl aus String in konvertieren - eg - 05.07.2007 09:19

Da muss man ein bischen tricksen. Du musst die Zahlen Byteweise einlesen uns daraus eine normale Zahl machen 64-Bit-Zahl machen (unsigned/signed Quad). Anhand des höchstwertigen Bits entscheidest du dich für das Vorzeichen.

Ich habe sowas mit 24-Bit-Zahlen gemacht, also eine 32-Bit daraus gezaubert.

Mit dem Einlesen(aus dem String extrahieren) hast du kein Problem, oder?

eg


Hex Zahl aus String in konvertieren - hanno - 05.07.2007 10:05

Habe das Forum nach passenden Lösungsansätzen durchsucht, und leider nichts gefunden. Mit der Format-String ("%6x%6x%6x") Funktion habe ich Probleme mit negativen Zahlen, werde deswegen wahrscheinlich die Zahlen bitweise zerpflücken müssen, oder gibt es eine Funktion die mit dem 2er-Komplement umgehen kann.
@eg:
könntest Du deine Lösung mit dem bitweisen zerpflücken posten. Ich kann mir im Moment nicht vorstellen wie ich dabei vorzugehen hab.

Vielen Dank.

' schrieb:Da muss man ein bischen tricksen. Du musst die Zahlen Byteweise einlesen uns daraus eine normale Zahl machen 64-Bit-Zahl machen (unsigned/signed Quad). Anhand des höchstwertigen Bits entscheidest du dich für das Vorzeichen.

Ich habe sowas mit 24-Bit-Zahlen gemacht, also eine 32-Bit daraus gezaubert.

Mit dem Einlesen(aus dem String extrahieren) hast du kein Problem, oder?

eg



Hex Zahl aus String in konvertieren - eg - 05.07.2007 10:11

Also hier die Konvertierung. Wichtig für dich ist der Inhalt der For-Schleife.

eg


Hex Zahl aus String in konvertieren - Lucki - 05.07.2007 13:05

Alternativ die etwas einfachere Konvertierung (oder hast Du, Eugen, das in den falschen Threat gepostet, mir ist das so kompliziert, daß ich nicht mal den Zusammenhang zur Frage sehe)

[attachment=7294]

Funktionsweise:
1.) Der String wird in einen Array von Teilstrings konvertiert, wie sie den 3 Zahlen entsprechen
2.) Die Strings werden in U32 gewandelt
3.) Damit das das Vorzeichen bestimmende Bit des 24bit-Wertes zum MSB der 32 bit-Zahl wird, müssen die bits um 8 bit nach links geshiftet werden (Multiplikation mit 256)
4) Wandlung in I32 ergibt ergibt die vorzeichenbehaftete zahl
5.) Sie ist um den Faktor 256 zu hoch, Division liefert das richtige Ergebnis.


Hex Zahl aus String in konvertieren - hanno - 06.07.2007 08:06

Vielen Dank an euch, hab beide Varianten versucht.
@eg: Funktioniert wunderbar
@Lucki: Funktioniert wunderbar
Gruß, Hanno.