Powershell bietet eine Reihe von mächtigen Konvertierungsoptionen, um Datentypen ineinander umzuwandeln. Normalerweise reicht es, die Konvertierungsfunktion [Datentyp[]] vor den umzuwandelnden Wert zu schreiben. Um Beispielsweise einen String in ein Array zu konvertieren, reicht folgende Befehlszeile:
[BYTE[]]"Netz-Weise"
Als Ergebnis erhalten Sie die einzelnen Buchstaben. Auf die gleich Weise können Buchstaben in seinen ASCII-Code umwandeln:
[BYTE[]][CHAR[]]"Netz-Weise
Diese Kommandozeile gibt als Ergebnis die ASCII-Represäntation zurück. Dabei wird erst per [CHAR[]] der String in seine Einzelbuchstaben konvertiert, und danach konvertiert [BYTE[]] die Einzelbuchstaben in Ihre ASCII-Codes (Byte-Reräsentation). Powershell kann intern bereits mit Hexadezimalzahlen arbeiten. Das ist z.B. deshalb spannend, weil die Registry beispielsweise Byte-Werte als Hex-Codes speichert (Reg-Binary-Werte). Um eine Hex-Zahl in eine Dezimalzahl umzuwandeln, muß man vor die Zahl nur eine 0x schreiben, schon konvertiert Powershell automatisch. Alternativ klappt das auch mit einer .net-Methode:
[Int]::Parse($Hexzahl, [System.Globalization.NumberStyles]::HexNumber)
$Hexzahl ist hier eine Variable, die den Hexwert beinhaltet. Um eine Reihe von Hexzahlen in Binärwerte umzuwandeln, bietet sich daher folgende kurze Kommandozeile an:
"68,02,00,00,21".split(",") | foreach-object {`"0x`"+`$_}
"68,02,00,00,21" ist ein String, der Inhalt sind 5 Hexcodes. Wir splitten den String mit der Split-Funktion in Einzelwert, und stellen mit der Pipeline vor jede Einzelzahl per Stringverkettung ein "0x". Die Ausgabewerte werden von Powershell automatisch als Hex-Werte erkannt und umgewandelt.