Umwandeln von Zahlensystehmen

  • Allgemein

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von 00yoshi.

    Umwandeln von Zahlensystehmen

    Hi@all

    ich zerbreche mir den Kopf wie ich per VB Code Oktale Zahlen in Binär / Dezimal / Hex umwandeln kann... wie es mit stift und papier geht weiß ich aber wie ich es in form von code realisieren soll... bei der umwandlung von binär zu oktal etc. gibt es ja einzeiler mit Convert genau wie bei dezimal zu oktal etc. ...nur andersherum oktal zu binär etc. raff ich einfach nicht... und auch hex zu oktal etc. ...bin für jeden tipp dankbar

    MfG
    unihocker :)
    eigene Algorithmen schreiben, also praktisch das was ich auf dem Papier / im Kopf mache einfach in code umzusetzen, genau das will ich aber ich bekomme es nicht immer hin. Bei der dezimal zu Binärumwandlung hab ich es so gemacht aber für die oktal zu Binärumwandlung hab ich schon eine wissenslücke um des so zu realisieeren wie auf dem Papier. ich weis zwar wie ich mir die anzahl der zeichen anzeigen lassen kann (also z.b. bei Oktal 750 -> 3 zeichen) aber ich weis nicht wie ich jede einzeln bearbeiten kann, also zuerst nur die 7 nehmen die dann umrechnen dann die 5 und dann die 0 (wobei jede umzurechnende immer 3 binärstellen ergeben muss) könnte mir da bitte jemand einen hinweiß geben wie ich die einzelnen stellen die ich mit Length bestimmt habe verarbeiten kann?
    @ AliveDevil, was soll das bringen?
    Die vorgegebene 3-stellige Ziffer rückwärts zählen?

    @TE,
    zerlege die vorgegebene 3-stellige Zahl in einzelne Ziffern:

    VB.NET-Quellcode

    1. Sub zerlegen(ByVal Zahl As Integer)
    2. Dim Ziffer As Integer
    3. Ziffer = Zahl \ 100' Der \-Operator gibt das ganzzahlige Ergebnis zurück. Aus 345 \ 100 wird 3
    4. Console.WriteLine(Ziffer)
    5. Zahl -= Ziffer * 100'Jetzt die 1. Ziffer * Stellenwert (hier Hunderter) von der Zahl abziehen, es bleibt 345 - 300 = 45
    6. Ziffer = Zahl \ 10'usw.usw.
    7. Console.WriteLine(Ziffer)
    8. Zahl -= Ziffer * 10
    9. Console.WriteLine(Zahl)
    10. End Sub
    Das lässt sich sicherlich auch in eine nahezu beliebige Stellenanzahl erweitern (Was integer so hergibt)
    Fiel Fergnügen
    Vatter

    Edit: Mein Spieltrieb hat noch die Schleifenvariante ausgespuckt:

    VB.NET-Quellcode

    1. Sub zerlegen_beliebig(ByVal Zahl As Int64)
    2. Dim Ziffer As Int64
    3. Dim Stellenanzahl As Int64 = CStr(Zahl).Length - 1
    4. For i = Stellenanzahl To 0 Step -1
    5. Dim Teiler As Int64 = CLng(10 ^ i)
    6. Ziffer = Zahl \ Teiler
    7. Zahl -= Ziffer * Teiler
    8. Console.WriteLine("Ziffer = {0}", Ziffer)
    9. Next
    10. End Sub

    :D

    Edit2:
    Jetz noch alles Komplettimente als Console :D
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim Eingabe As String
    4. Eingabe = Console.ReadLine()
    5. Do
    6. Dim a As Integer = CInt(Eingabe)
    7. zerlegen_beliebig(a)
    8. Console.WriteLine("nächste Eingabe bitte")
    9. Eingabe = Console.ReadLine()
    10. Loop Until Eingabe = ""
    11. End Sub
    12. Sub zerlegen_beliebig(ByVal Zahl As Int64)
    13. Dim Ziffer As Int64
    14. Dim Stellenanzahl As Int64 = CStr(Zahl).Length - 1
    15. For i = Stellenanzahl To 0 Step -1
    16. Dim Teiler As Int64 = CLng(10 ^ i)
    17. Ziffer = Zahl \ Teiler
    18. Zahl -= Ziffer * Teiler
    19. Console.WriteLine("Ziffer = {0}", Ziffer)
    20. Dim B As Boolean() = IntegerToOktal(CInt(Ziffer))
    21. If B IsNot Nothing Then
    22. Console.WriteLine("Binär = {0};{1};{2}", B(2), B(1), B(0))
    23. End If
    24. Console.WriteLine()
    25. Next
    26. End Sub
    27. Function IntegerToOktal(ByVal Ziffer As Integer) As Boolean()
    28. If Ziffer > 7 Then
    29. Console.WriteLine("Die Ziffer {0} ist > 7 und damit ungültig", Ziffer)
    30. Return Nothing
    31. End If
    32. Dim B(2) As Boolean
    33. For i = 2 To 0 Step -1
    34. Dim e As Integer = CInt(Ziffer \ CInt(2 ^ i))
    35. If e > 0 Then
    36. B(i) = True
    37. Ziffer = CInt(Ziffer - 2 ^ i)
    38. End If
    39. Next
    40. Return B
    41. End Function
    42. End Module
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

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