akrupp2
Goto Top

String in Hex umwandeln

Hallo Leute,

Wollte mal fragen ob es eine Möglichkeit gibt einen String in eine Hex-Zahl umzuwandeln und diese dann weiter zu verwenden?

Content-Key: 116075

Url: https://administrator.de/contentid/116075

Printed on: April 23, 2024 at 15:04 o'clock

Member: bastla
bastla May 14, 2009 at 10:50:15 (UTC)
Goto Top
Hallo akrupp2!

Neigst Du zu Extremen? Im Vergleich zu Deiner gestrigen Frage hast Du dieses Mal entschieden zu wenig weit ausgeholt ... face-wink

Die Antwort ist übrigens: Ja.

Grüße
bastla
Mitglied: 78569
78569 May 14, 2009 at 14:52:34 (UTC)
Goto Top
Hallo Alexander,

wenn ich Deine Frage richtig verstehe, hast Du einen String etwa

"12345"

In VB würde daraus eine HEX wie folgt

HEXString = Hex(Val("12345"))

oder bei Verwendung von zwei TextBoxen:

TextBox2.Text = Hex(Val(TextBox1.Text))

In Wert umwandeln geht dann einfach so:

Dim Wert As Long = Val("&H" + TextBox2.Text)

Gruß

Horst
Mitglied: 76109
76109 May 14, 2009 at 17:11:39 (UTC)
Goto Top
Hallo horstfh,

also, der Beitrag lautet eine Hex-Zahl. Und dann funktioniert nur das letzte Beispiel, wenn Du z.B. ein String in der Form "1A2B" hast.

Dann kann es z.B.sein:

Long = CLng("&H" & "1A2B")
Double = CDbl("&H" & "1A2B")
Decimal = CDec("&H" & "1A2B")
usw.

Gruß Dieter
Member: akrupp2
akrupp2 May 14, 2009 at 17:20:23 (UTC)
Goto Top
Hi Bastla,

dann werd ich mal etwas deutlicher, auch wenn sich mein Problem erledigt hat, aber interessehalber würd ich es trotzdem gern wissen face-wink

Ich habe ein Batchskript geschrieben, welches mir in ca. 400 XML-Dateien einen String sucht und durch einen anderen ersetzt. Das eigentliche Ersetzen erledige ich mit MB-Search&Replace. Dieses Tool wird im Batchskript mit den entsprechenden Parametern aufgerufen.
In etwa so: MB-SearchAndReplacePro.exe -F%LW%%Ordner%%Datei% -Oc%Suchen% -Nc%Ersetzen% -G -C
Jetzt kommt aber das Problem: Der Such- und Ersetzenstring dürfen keine Leerzeichen oder Anführungszeichen enthalten. (Dumme Sache das)
Allerdings bietet das Tool die Möglichkeit die Strings in Hex zu übergeben, somit kann ich dann auch die nicht erlaubten Zeichen suchen und ersetzen.
Ich würde jetzt gerne den String in Hex umwandeln, bevor ich ihn als Parameter übergebe.
Der folgende Text-String: - Dies ist ein "Beispielstring" - würde in Hex so aussehen: 44696573206973742065696E2022426569737069656C737472696E6722.

Meine Frage wäre jetzt wie ich diesen String berechnen kann, bevor ich ihn in eine Variable speicher und anschließend als Parameter übergebe.

Ich habe auch schon daran gedacht den Wert über VB zu berechnen, aber wie kriege ich den Wert wieder zurück ins Batchskript, damit ich ihn in eine Variable speichern und übergeben kann?
Member: akrupp2
akrupp2 May 14, 2009 at 17:27:01 (UTC)
Goto Top
Wie oben schon erwähnt ist der Ursprungsstring keine Zahl. Das hätte ich dann selbst schon hinbekommen face-wink Bzw. Es gibt schon einen Beitrag, der beantwortet, wie man mit einem Batch-Skript eine Zahl in Hex umrechnet.
Ich müsste ein Text-String in Hex umwandeln und das ist nicht ganz so leicht (glaub ich).
Member: bastla
bastla May 14, 2009 at 17:31:16 (UTC)
Goto Top
Hallo akrupp2!

"Leicht" ist relativ ...
@echo off & setlocal
set "String=Beispielstring"  

set C=%temp%\ConvertToHex.vbs
>%C% echo S=WScript.Arguments(0):For i=1 To Len(S):H=H ^& Hex(Asc(Mid(S,i,1))):Next:WScript.Echo H
for /f %%i in ('cscript //nologo %C% "%String%"') do set "Hex=%%i"  
echo %Hex%
Nachtrag: Um mich nicht vor der "Anführungszeichen"-Problematik zu drücken:
@echo off & setlocal
set "String=Dies ist ein @Beispielstring@"  

set C=%temp%\ConvertToHex.vbs
>%C% echo S=WScript.Arguments(0):S=Replace(S,"@",""""):For i=1 To Len(S):H=H ^& Hex(Asc(Mid(S,i,1))):Next:WScript.Echo H  
for /f %%i in ('cscript //nologo %C% "%String%"') do set "Hex=%%i"  
echo %Hex%
Dabei habe ich es mir allerdings etwas "leicht" gemacht und ein ansonsten unbenutztes Zeichen (im Beispiel "@") als Ersatz für die Anführungszeichen übergeben.

Grüße
bastla
Mitglied: 76109
76109 May 14, 2009 at 17:40:15 (UTC)
Goto Top
Hallo akrupp2,

ja, was ist Deiner meiner nach ein Text, in meinen Beispielen stehen Textzahlen. Alles was in "" steht ist Text, also "Text" oder "1A2B"

Ist allerdings VB und nicht Batch. Das war Deinem Beitrag nicht zu entnehmen und auf die Kategorie habe ich leider nicht geachtet.

Aber bastla hat ja die Lösung in Batch schon geschriebenface-smile

Gruß Dieter
Member: akrupp2
akrupp2 May 14, 2009 at 17:42:44 (UTC)
Goto Top
Wow, das ging ja schnell.
Und es funktioniert auch noch Wie geil ist das denn?

Vielen Dank.
Werde mir jetzt mal überlegen das Batch nochmal umzuschreiben.
Member: akrupp2
akrupp2 May 14, 2009 at 17:48:20 (UTC)
Goto Top
Richtig. Aber danke trotzdem für Deine Bemühung.
Ich werde die Frage jetzt als erledigt abhaken face-smile

Echt ein Top Forum mit kompetenten Moderatoren. Danke nochmal