binär -> dezi, und umgekehrt, VB

Dieses Thema im Forum "Programmieren" wurde erstellt von rapmaster, 10. März 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. rapmaster

    rapmaster Halbes Gigabyte

    Registriert seit:
    21. Juli 2002
    Beiträge:
    5.181
    Function GetBin(Zahl As Long) As String
    Dim k As Long
    Do Until 2 ^ (k + 1) - 1
    k = k + 1
    Loop
    For t = 0 To k
    If 2 ^ t And Zahl Then
    GetBin = "1" + GetBin
    Else
    GetBin = "0" + GetBin
    End If
    Next t
    End Function

    Function GetZahl(Bin As String) As Long
    Bin = Trim(Bin)
    For t = 0 To Len(Bin) - 1
    If Mid(Bin, Len(Bin) - t, 1) = "1" Then GetZahl = GetZahl + 2 ^ t
    Next t
    End Function

    hier ist der code, allerdings verstehe ich irgend wie nur bahnhof.
    könnte mir jemand erklären?
    besonders :
    If Mid(Bin, Len(Bin) - t, 1) = "1" Then GetZahl = GetZahl + 2 ^ t
    verstehe ich nicht.
    hoffe dass ihr mir helfen könnt.
     
  2. Progmeister

    Progmeister Kbyte

    Registriert seit:
    13. August 2002
    Beiträge:
    161
    Plausibilitätsprüfungen
    If Not IsNumeric(vValue) Then
    Dual = "Wert nicht Numerisch!!!"
    Exit Function
    ElseIf vValue > 999999999 Then
    Dual = "Zahl ist zu gross!!!"
    Exit Function
    End If

    Do
    If vValue Mod 2 = 0 Then
    Dual = "0" & Dual
    Else
    Dual = "1" & Dual
    End If
    vValue = vValue \ 2
    Loop While vValue > 0

    Dual = Format(Dual, _
    "0000 0000 0000 0000 0000 0000 0000 0000")
    End Function

    Beispiel

    MsgBox Dual(192) \'Ergebnis: 0000 0000 0000 0000 0000 0000 1100 0000
     
  3. rapmaster

    rapmaster Halbes Gigabyte

    Registriert seit:
    21. Juli 2002
    Beiträge:
    5.181
    danke, werde jetzt noch einbißchen darüber nachdenken.
    und dann müsste ich das verstehen.

    ;-)

    mfg
    rappi
     
  4. rapmaster

    rapmaster Halbes Gigabyte

    Registriert seit:
    21. Juli 2002
    Beiträge:
    5.181
    hm, könntest du mir bitte auch das für Binärzahlen sagen?
    denn das von da oben ist ja das für hexzahlen
    ;-)

    mfg
    rappi
     
  5. mkl

    mkl Kbyte

    Registriert seit:
    9. August 2000
    Beiträge:
    345
    Also:
    Du hast eine Binärzahl, z.B. 11100101
    Mit der Schleife wird jetzt, hinten beginnend, jede Binärziffer genommen und in ihrer dualen Wertigkeit 2^t, d.h. die letzte ist 2^0(=1), die vorletzte 2^1(=2), dann 2^2=4 etc auf GetZahl aufaddiert, und zwar immer nur, wenn die Ziffer eine "1" ist (Bei "0" kann man sich das Aufaddieren sparen, kommt ja eh 0 raus). Obiges Beispiel ergibt:
    11100101
    1*2^0=1
    0*2^1=0
    1*2^2=4
    0*2^3=0
    0*2^4=0
    1*2^5=32
    1*2^6=64
    1*2^7=128
    also zusammen: 1+4+32+64+128=229
    Jetzt klarer geworden ???
     
  6. Progmeister

    Progmeister Kbyte

    Registriert seit:
    13. August 2002
    Beiträge:
    161
    Dezimal nach Hexadezimal
    On Error Resume Next
    Dim lngDezimal As Long
    lngDezimal = txtDec
    txtHex = Hex$(lngDezimal)
    If Err.Number > 0 Then txtHex = "?"
    End Sub

    Private Sub txtHex_Change()
    \' Hexadezimal nach Dezimal
    Dim strHex As String
    On Error Resume Next
    strHex = txtHex
    lngDezimal = CLng("&H" & strHex)
    txtDec = lngDezimal
    If Err.Number > 0 Then txtDec = "?"
    End Sub

    fertig
     
  7. rapmaster

    rapmaster Halbes Gigabyte

    Registriert seit:
    21. Juli 2002
    Beiträge:
    5.181
    Gar nicht klar, und damit sollte ich in der lager sein binär zahlen in dezimal zu konvertieren??
    Und was muss ich denn in den commandbox reinschreiben wenn ich auf dem forum noch ein textbox habe, wo man die binär zahl eingeben kann?
    au man, ich bekomme schon kopfschmerzen!!!

    mfg
    rappi
     
  8. Progmeister

    Progmeister Kbyte

    Registriert seit:
    13. August 2002
    Beiträge:
    161
    ganz einfach,
    mit "Mid" suchst du ein bestimmtes Zeichen (hier ist es "1") welches mit Hilfe der For Schleife die so lang ist wie der übergebene String "Bin" gesucht wird

    also Mid ("Wort", ab Stelle, String Länge) ="1"

    zum Beispiel
    Mid ("Wort", 2,1)="o"
    Mid ("Wort", 1,2)="Wo"
    Mid ("Wort", 1,3)="Wor"
    Mid ("Wort", 2,3)="ort"
    Mid ("Wort", 2, Len("Wort")-2) = "or" und so weiter

    alles klar
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen