ahstax
Goto Top

String Zeichenpaare auslesen und bearbeiten

Moin,

ich möchte gerne einen String der Form "41004800", der beliebig lang sein kann, in Zeichenpaare aufteilen, also in 41, 00, 48, 00, ... usw.

Wie mache ich das am geschicktesten?

Neugierige Grüße,
Andreas

Content-Key: 331011

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

Ausgedruckt am: 29.03.2024 um 07:03 Uhr

Mitglied: Kraemer
Kraemer 03.03.2017 um 08:39:07 Uhr
Goto Top
Moin,

Rahmenbedingungen?

Gruß
Mitglied: 132272
132272 03.03.2017 aktualisiert um 08:42:56 Uhr
Goto Top
Mit Regular Expressions, z.B.
[regex]::matches("112233445566",'.{,2}').Captures | %{$_.Value}  

Gruß
Mitglied: ahstax
ahstax 03.03.2017 um 08:47:13 Uhr
Goto Top
Danke für Eure Antworten!

Ich hätte vielleicht mehr Information zur Verfügung stellen sollen, bitte um Entschuldigung.

Ich möchte das mit einer DOS-Batch durchführen. Die ausgelesenen Zahlen/Buchstabenpaaren werden anschließend weiter bearbeitet. Doppelnullen werden verworfen, die übrigen Doppelziffern, die Hex-Code sind, werden in Buchstaben umgerechnet.
Mitglied: 132272
132272 03.03.2017 aktualisiert um 08:53:15 Uhr
Goto Top
Für reines Batch benutze die :strLen Funktion http://www.dostips.com/DtTipsStringOperations.php#Function.strLen
Damit ermittelst du die Länge des Strings. Dann baust du mit dieser Info eine for /L Schleife bei der du jeweils ein Zeichen überspringst und mit den Standard-String-Funktionen anhand der Position extrahierst
http://www.dostips.com/DtTipsStringOperations.php#Snippets.MidString

p.s. Obiges Powershell kannst du problemlos auch in der Batch verwenden face-wink
Mitglied: rubberman
rubberman 03.03.2017 aktualisiert um 08:56:24 Uhr
Goto Top
Hallo ahstax,

das klingt alles irgendwie verkehrt, nämlich wie UTF-16 zu ANSI. Hast du tatsächlich von vorn herein einen HEX String oder hast du UTF-16 Text, den du erst dumpen musstest?

Grüße
rubberman
Mitglied: rubberman
rubberman 03.03.2017 um 11:15:16 Uhr
Goto Top
Mir ist da gerade was eingefallen ...
@echo off
:: HEX String in Datei schreiben
>"out.txt" echo 41004800  

:: in Bytes decodieren und in Datei schreiben
>nul certutil -f -decodehex "out.txt" "tmp.txt"  

:: Codepage auf Windows-1252 ändern
>nul chcp 1252

:: Byte Order Mark schreiben
<nul >"out.txt" set /p "=ÿþ"  

:: decodierte Zeichenfolge anhängen
>nul copy /b "out.txt" /b + "tmp.txt" /b  

:: temporäre Datei löschen
del "tmp.txt"  

:: die UTF-16 codierte Zeichenfolge mit TYPE zu Windows-1252 konvertieren und ausgeben
type "out.txt"  

echo(
pause
Viel Spaß.