1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

binär -> dezi, und umgekehrt, VB

Discussion in 'Programmieren' started by rapmaster, Mar 10, 2003.

Thread Status:
Not open for further replies.
  1. rapmaster

    rapmaster Halbes Gigabyte

    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

    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

    danke, werde jetzt noch einbißchen darüber nachdenken.
    und dann müsste ich das verstehen.

    ;-)

    mfg
    rappi
     
  4. rapmaster

    rapmaster Halbes Gigabyte

    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

    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

    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

    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

    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
     
Thread Status:
Not open for further replies.

Share This Page