Format umwandeln

13/01/2008 - 10:33 von Peter Schirmer | Report spam
Hallo,

ich möchte mich gerne mit der WSUS-Datenbank verbinden und Daten
abfragen (inbs. über die Dateien).

Das klappt auch soweit, nur kriege ich an einer Stelle keinen String
zurück, sondern Bytes. Ich habe schon versucht, den Rückgabewert
umzuwandeln, aber es kam kein lesbarer String dabei herum.

Nach langer Suche im Internet bin ich auf diesen Schnippsel gestoßen,
der aber aus einem .vbs-Script stammt:

Function ConvertByteArray(arr)
Dim str, i, ret

str = CStr(arr)
ret = ""
For i = 1 To LenB(str)
ret = ret & Right("00" & Hex(AscB(MidB(str, i, 1))), 2)
Next

ConvertByteArray = ret

End Function

Ich habe das Problem, dass ich dazu die VB.NET-Befehle nicht kenne, die
mir weiterhelfen. Mir geht es inbs. um diese Zeile

ret = ret & Right("00" & Hex(AscB(MidB(str, i, 1))), 2)

Als Ergebnis soll eine Buchstaben-Zahlen-Kombination rauskommen, wie
z.B. 6876EE9247ABA9CABE863511EAC76DFD419FB605

Das sind die Dateinamen, wie sie auf dem WSUS-Server vorliegen.

Kann mir da jemand weiterhelfen und mir sagen, wie die Zeile in VB.NET
auszusehen hat?

Gruß
Peter
 

Lesen sie die antworten

#1 Karsten Sosna
13/01/2008 - 12:14 | Warnen spam
ich möchte mich gerne mit der WSUS-Datenbank verbinden und Daten abfragen
(inbs. über die Dateien).

Das klappt auch soweit, nur kriege ich an einer Stelle keinen String
zurück, sondern Bytes. Ich habe schon versucht, den Rückgabewert
umzuwandeln, aber es kam kein lesbarer String dabei herum.

Nach langer Suche im Internet bin ich auf diesen Schnippsel gestoßen, der
aber aus einem .vbs-Script stammt:

Function ConvertByteArray(arr)
Dim str, i, ret
str = CStr(arr)
ret = ""
For i = 1 To LenB(str)
ret = ret & Right("00" & Hex(AscB(MidB(str, i, 1))), 2)
Next
ConvertByteArray = ret
End Function

Ich habe das Problem, dass ich dazu die VB.NET-Befehle nicht kenne, die
mir weiterhelfen. Mir geht es inbs. um diese Zeile

ret = ret & Right("00" & Hex(AscB(MidB(str, i, 1))), 2)

Als Ergebnis soll eine Buchstaben-Zahlen-Kombination rauskommen, wie z.B.
6876EE9247ABA9CABE863511EAC76DFD419FB605



Hallo Peter,
was die Umwandlungsfuktion machen soll ist mier auch schleierhaft.
Um aus einem Byte-Array einen String zu machen(wenn er als ASCII vorliegt)
kannst Du

System.Text.ASCIIEncoding.ASCII.GetString(arr)

wobei arr das Byte-Array ist.
Wenn Du aber hingegen die Hex-Werte brauchst hilft folgende Schleife
\\\
Dim ret As String
For Each by As Byte in arr
ret &= Hex(by).PadLeft(2, "0"c)
Next
///
Auch hier ist arr ein Byte-Array. Hex in eine Funktion, die einen Wert in
die hexadezimale Darstellung umwandelt(als String). Da die Funktion aber
keine führenden Nullen liefert musst Du sie mittels PadLeft davor
einfügen(deswegen links).
Gruß Scotty

Ähnliche fragen