Konvertieren von Hex-Zahlen ins Dezimalzahlensystem?

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von JuliaGroß.

    Konvertieren von Hex-Zahlen ins Dezimalzahlensystem?

    Hallo liebe VB-Community,

    ich habe das dringende Problem dass ich eine zweistellige Hex-Zahl (also minimal 0, maximal 255 in Dezimal) in eine Dezimalzahl umwandeln möchte. Ich habe zwar ein Beispiel gefunden dafür gefunden, jedoch kann ich den Zahlenbereich von A-F nicht übergeben :( Es geht darum dass ich einen HTML-Farbcode im Stil von beispielsweise #ffffff auseinanderpflücke und die einzelnen Werte für Rot, Grün und Blau als Dezimalzahl von haben möchte. Ich bin schon soweit dass ich die entsprechenden Stellen extrahiere, allerdings finde ich keine Funktion in meinem VB.net dass mit die übriggebliebenen zweistelligen Hex-Werte in Dez umwandelt.

    Wäre für jede Hilfe dankbar, da ich da echt feststecke.

    Liebe Grüße,

    Julia
    Falls es keine Funktion geben sollte (was ich nicht weiß und nicht glaube), so geht es:

    Die Hex-Zahl (z.B. ffffff) so lange durch 10 teilen (10=Dezimal), bis bei einer ganzzahligen Division (mit "Div", also keine Kommawerte) 0 rauskommt. Dabei immer den Rest notieren ("Mod"). Am Ende die Reste von hinten nach vorne lesen und man hat die Dezimalzahl.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Am einfasten gehts mit einer "Tabelle", einer einfachen Multiplikation und einem Math.Pow(16, x). Die Tabelle machst du am Besten in Form von Select Case.

    Der Code würde dann so aussehen:

    VB.NET-Quellcode

    1. Dim hexZahl as String
    2. Dim decZahl as Long
    3. hexZahl = "AF68C3"
    4. For i as Integer = 0 to hexZahl.Length-1
    5. Dim hexChar as String = hexZahl.SubString(hexZahl.Length-1-i, 1)
    6. dim decWert as Integer
    7. Select Case hexChar.ToUpper()
    8. Case "1": decWert = 1
    9. Case "2": decWert = 2
    10. Case "3": decWert = 3
    11. Case "4": decWert = 4
    12. Case "5": decWert = 5
    13. Case "6": decWert = 6
    14. Case "7": decWert = 7
    15. Case "8": decWert = 8
    16. Case "9": decWert = 9
    17. Case "A": decWert = 10
    18. Case "B": decWert = 11
    19. Case "C": decWert = 12
    20. Case "D": decWert = 13
    21. Case "E": decWert = 14
    22. Case "F": decWert = 15
    23. Case Else: decWert = 0
    24. End Select
    25. decZahl += decWert * Math.Pow(16, i)
    26. Next i



    so long..
    Andy

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mad Andy“ ()

    Hallo Marcus Gräfe und Mad Andy,

    ich habe Marcus Tipp mal theoretisch probiert und es funktioniert tatsächlich, sehr interessante Methode :) Da Mad Andys Methode aber auch funktioniert habe ich es nicht erst programmiert. Dankeschön euch Beiden :)

    Habe aber noch eine andere Methode gefunden:

    VB.NET-Quellcode

    1. Convert.ToInt32("FF", 16) '255


    Dieser Funktion kann man als zweiten Parameter die Basis mitgeben mithilfe der die Variable konvertiert wird, VB liefert also doch von Haus aus eine passende Möglichkeit mit :)

    Liebe Grüße,

    Julia

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „JuliaGroß“ ()