vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Dez-Bin-Hex Umwandlung 
Autor: markus.merkle
Datum: 26.02.03 10:22

Hallo Zusammen

hier noch meine Lösung, wie man in verschiedene Zahlensysteme wandelt.
Sie gilt für Dezimal, Binär und Hexadezimal - lässt sich aber auch einigermassen leicht für andere Zahlensysteme verwenden.

Hier die Entscheidung, in welches Zahlensystem gewandelt werden soll.
Ich verwende die ganze Funktionalität in einem Parser/Evalfunktion drin und bauche eine Rückgabewert. Ich denke aber mal, der kann auch weggelassen und das Resultat einefach in ne Variable geschrieben werden.

'Konvertierungsfunktion. Konvertiert Zahlen von einem Zahlensystem in ein 
' anderes.
Private Function Conversion(varConv As String, varValue As String) As String
On Error GoTo ConversionError
Select Case LCase(varConv)
    Case "bin"
            Conversion = ConversiontoBin(CDbl(varValue))
    Case "dec", "dez"
        If UCase(Left(varValue, 2)) = "&H" Then
            Conversion = CDbl(varValue)
        Else
            Conversion = ConversiontoDec(varValue)
        End If
    Case "hex"
        Conversion = ConversiontoHex(varValue)
End Select
Exit Function
 
ConversionError:
Conversion = "0"
End Function
Anschliessend die drei Varianten zur effektiven Wandlung:
'Binäre Wandlung.
Private Function ConversiontoBin(varValue) As String
Dim varNewBin As String
On Error GoTo ConversionError
 
If varValue = 0 Then
    varNewBin = "0"
Else
    varNewBin = ""
    While varValue <> 0
        varNewBin = (varValue Mod 2) & varNewBin
        varValue = Int(varValue / 2)
    Wend
End If
ConversiontoBin = varNewBin & "b"
Exit Function
 
ConversionError:
ConversiontoBin = "0"
End Function
'Dezimalwandlung.
Private Function ConversiontoDec(varValue As String) As String
Dim i As Integer, char As Integer
Dim varNewDec As Double
On Error GoTo ConversionError
 
i = Len(varValue)
 
If varValue = 0 Then
    varNewDec = 0
Else
    varNewDec = 0
    Do Until i = 0
        char = Mid(varValue, i, 1)
        varNewDec = char * 2 ^ (Len(varValue) - i) + varNewDec
        i = i - 1
    Loop
End If
 
ConversiontoDec = CStr(varNewDec)
Exit Function
 
ConversionError:
ConversiontoDec = "0"
End Function
'Wandlung ins Hexadezimale Zahlensystem.
Private Function ConversiontoHex(varValue As String) As String
Dim varNewHex As String
On Error GoTo ConversionError
 
'Dieses Array trägt den Hex-Zahlen-Umfang in sich, also 0-9 und A-F.
Dim arrHexArray(15) As String
arrHexArray(0) = "0"
arrHexArray(1) = "1"
arrHexArray(2) = "2"
arrHexArray(3) = "3"
arrHexArray(4) = "4"
arrHexArray(5) = "5"
arrHexArray(6) = "6"
arrHexArray(7) = "7"
arrHexArray(8) = "8"
arrHexArray(9) = "9"
arrHexArray(10) = "A"
arrHexArray(11) = "B"
arrHexArray(12) = "C"
arrHexArray(13) = "D"
arrHexArray(14) = "E"
arrHexArray(15) = "F"
 
If LCase(Right(varValue, 1)) = "b" Then
    varValue = Left(varValue, Len(varValue) - 1)
    'Wenn es eine Binäre Zahl ist, wandle sie zuerst Dezimal.
    varValue = ConversiontoDec(varValue)
ElseIf LCase(Right(varValue, 1)) = "d" Then
    varValue = Left(varValue, Len(varValue) - 1)
Else
    GoTo ConversionError
End If
 
'Mit einer Modulo-Operation wird die Zahl "zerkleinert".
If varValue = 0 Then
    varNewHex = "0"
Else
    varNewHex = ""
    While varValue <> 0
        varNewHex = (arrHexArray(varValue Mod 16)) & varNewHex
        varValue = Int(varValue / 16)
    Wend
End If
ConversiontoHex = "&H" & varNewHex
Exit Function
 
ConversionError:
ConversiontoHex = "0"
End Function
Grüsse aus der Schweiz
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dez-Bin-Hex Umwandlung2.795vbler24.12.02 08:22
Re: Dez-Bin-Hex Umwandlung86Cobalt24.12.02 09:54
Re: Dez-Bin-Hex Umwandlung1.699vbler24.12.02 10:20
Re: Dez-Bin-Hex Umwandlung1.757vbler27.12.02 08:40
Re: Dez-Bin-Hex Umwandlung65Frank27.12.02 09:14
Re: Dez-Bin-Hex Umwandlung68Frank27.12.02 09:40
Re: Dez-Bin-Hex Umwandlung1.848vbler27.12.02 09:47
Re: Dez-Bin-Hex Umwandlung59Frank27.12.02 10:35
Re: Dez-Bin-Hex Umwandlung1.677vbler27.12.02 10:40
Re: Dez-Bin-Hex Umwandlung1.835markus.merkle26.02.03 10:22
Re: Dez-Bin-Hex Umwandlung1.764markus.merkle19.03.03 13:11

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel