vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings   |   VB-Versionen: VB2005, VB200823.09.08
Hex-Dump

Diese Funktion wandelt einen String in einen formatierten HexDump-String um.

Autor:   Helmut SuhrenBewertung:  Views:  12.742 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Die Function HexDump wandelt einen (Datei-)String in einen formatierten HexDump-String um. Dieser kann z.B. in einer Textbox angezeigt werden.
Die Nutzung der StringBuilder-Klasse macht einen erheblichen Geschwindigkeitsvorteil gegenüber Verkettungsvorgängen mithilfe des &-Operators deutlich.

Module modHexDump
  ''' <summary>
  ''' Die Funktion HexDump wandelt einen Srting in einen HexDump String um.
  ''' </summary>
  ''' <param name="strInput">Eingangs String</param>
  ''' <param name="strLength">Länge des Eingangs String (-1: kompletten String)</param>
  ''' <returns>Ausgangs String</returns>
  ''' <remarks></remarks>
  Friend Function HexDump(ByRef strInput As String, _
    Optional ByVal strLength As Integer = -1) As String
 
    Dim Character As String
    Dim AsciiValue As Integer
    Dim i As Integer
    Dim tmp As Integer
    Const Columns As Integer = 16
 
    Dim sbTemp As New System.Text.StringBuilder
    Dim sbOutput As New System.Text.StringBuilder
 
    If strLength = -1 Then strLength = strInput.Length
 
    For i = 1 To strLength
 
      ' nächsten Character bestimmen
      Character = strInput.Substring(i - 1, 1)
 
      ' Ascii Wert des Characters bestimmen
      AsciiValue = Asc(Character)
 
      If i Mod Columns = 1 Then
        ' zu Beginn der Ausgabe-Zeile den Pointer darstellen ...
        sbOutput.Append(FormatHex((i - 1).ToString("X"), 8) & "   ")
      End If
 
      ' ... dann den hex-Werte anhängen ...
      sbOutput.Append(FormatHex(AsciiValue.ToString("X"), 2))
      sbOutput.Append(IIf(i Mod Columns = 8, " - ", " "))
 
      ' darstellbare Zeichen als Character darstellen, andere als "."
      sbTemp.Append(IIf(AsciiValue >= 32, Character, "."))
 
      If i Mod Columns = 0 Then
        ' ... und am Ende der Zeile die Character anhängen
        sbOutput.Append("   " & sbTemp.ToString & vbCrLf)
        sbTemp.Remove(0, sbTemp.Length)
      End If
 
    Next
 
    If sbTemp.ToString <> "" Then
      ' Letzte (unvollständige) Ausgabe-Zeile darstellen
      tmp = Columns - strLength Mod Columns
      sbOutput.Append(StrDup(3 * tmp, " "))
      If tmp > 8 Then sbOutput.Append("  ")
      sbOutput.Append("   " & sbTemp.ToString & vbCrLf)
    End If
 
    Return sbOutput.ToString
 
  End Function
 
  ''' <summary>
  ''' Die Funktion FormatHex formatiert den Hex-String auf die vorgegebene Anzahl von Zeichen.
  ''' </summary>
  ''' <param name="strIn">Eingangs Hex-String</param>
  ''' <param name="num">Anzahl der Zeichen</param>
  ''' <returns>Ausgangs String</returns>
  ''' <remarks></remarks>
  Private Function FormatHex(ByVal strIn As String, ByVal num As Integer) As String
    If Len(strIn) = num Then
      Return strIn
    Else
      Return StrDup(num - Len(strIn), "0") & strIn
    End If
  End Function
End Module



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.