Dezimalwerte in Binärwerte umwandeln

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Dezimalwerte in Binärwerte umwandeln

    hi, ich bin neu hier und hoffe, dass ich das ich das hier so posten darf.

    mein problem ist, dass ich irgendwie folgende dezimalwerte nicht in binärwerte gewandelt bekomme und verstehe einfach nicht so richtig wieso. ich dachte eigentlich, nachdem ich im internet geschaut habe und so einiges gefunden habe, dass es so einfach gehen müsste. ich poste einfach mal meinen code...

    VB.NET-Quellcode

    1. Dim failure_bits1_bit0 As String = Convert.ToString(1, 2) '= 10000000
    2. Dim failure_bits1_bit1 As String = Convert.ToString(2, 2) '= 01000000
    3. Dim failure_bits1_bit2 As String = Convert.ToString(4, 2) '= 00100000
    4. Dim failure_bits1_bit3 As String = Convert.ToString(8, 2) '= 00010000
    5. Dim failure_bits1_bit4 As String = Convert.ToString(16, 2) '= 00001000
    6. Dim failure_bits1_bit5 As String = Convert.ToString(32, 2) '= 00000100
    7. Dim failure_bits1_bit6 As String = Convert.ToString(64, 2) '= 00000010
    8. Dim failure_bits1_bit7 As String = Convert.ToString(128, 2) '= 00000001


    die ausgabe sieht allerdings so aus:

    Quellcode

    1. 1
    2. 10
    3. 100
    4. 1000
    5. 10000
    6. 100000
    7. 1000000
    8. 10000000


    also irgendwas hab ich da wohl nicht beachtet oder geht das so doch nicht ? 8|
    Wenn ich Sie jetzt um Sex bitten würde – wäre Ihre Antwort die gleiche, die Sie auf diese Frage geben? ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „chaos_progger“ ()

    Willkommen im Forum. :thumbup:

    chaos_progger schrieb:

    die ausgabe sieht allerdings so aus:
    Wieso allerdings?
    Das ist doch alles vollkommen korrekt.
    Was Du da siehst, ist die Stringrepräsentation Deines numerischen Wertes im Dualsystem.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ähm...aha, okay...

    aber nochmal, wie müsste ich das dann jetzt schreiben, dass es genau so angezeigt wird wie ich das dachte? ^^ das aus dem anderen thread versteh ich nicht so ganz, wie ich das jetzt darauf anwende.



    will das ja so:

    Quellcode

    1. 10000000
    2. 01000000
    3. 00100000
    4. 00010000
    5. 00001000
    6. 00000100
    7. 00000010
    8. 00000001


    muss ich da also parsen ?
    Wenn ich Sie jetzt um Sex bitten würde – wäre Ihre Antwort die gleiche, die Sie auf diese Frage geben? ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „chaos_progger“ ()

    VB.NET-Quellcode

    1. Convert.ToString(1, 2)

    Deine Funktion ist schon ganz richtig. Überprüfe sie doch einfach hier. Wenn du per Stift/Zettel umrechnest, dann schreibst du 1/2/4 etc. von Rechts nach Links auf, deswegen kann 10000000 niemals 1 sein !!!!!!
    Hier mal ein Beispiel wie man es per Hand umrechnet.

    Edit: Hier noch einmal ein Beispiel:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Julius“ ()

    chaos_progger schrieb:

    will das ja so:
    Solch unwichtige Information hätte ich auch nicht in den Eröffnungspost geschrieben. :S
    Sieh Dir mal das hier an:

    VB.NET-Quellcode

    1. Dim txt = ("0000000" & Convert.ToString(1, 2))
    2. Dim txt2 = txt.Substring(txt.Length - 8)
    3. MessageBox.Show(txt2)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. For i = 0 To 15
    2. MessageBox.Show(Convert.ToString(1 << i, 2).PadLeft(16, "0"c))
    3. Next


    edit: aber die Benamung hier:

    VB.NET-Quellcode

    1. Dim failure_bits1_bit0 As String = Convert.ToString(1, 2) '= 10000000
    2. Dim failure_bits1_bit1 As String = Convert.ToString(2, 2) '= 01000000
    3. Dim failure_bits1_bit2 As String = Convert.ToString(4, 2) '= 00100000
    4. Dim failure_bits1_bit3 As String = Convert.ToString(8, 2) '= 00010000
    5. Dim failure_bits1_bit4 As String = Convert.ToString(16, 2) '= 00001000
    6. Dim failure_bits1_bit5 As String = Convert.ToString(32, 2) '= 00000100
    7. Dim failure_bits1_bit6 As String = Convert.ToString(64, 2) '= 00000010
    8. Dim failure_bits1_bit7 As String = Convert.ToString(128, 2) '= 00000001
    lässt eiglich übles ahnen: Es geht dabei nicht iwie um bitweise Datenverarbeitung?
    Weil das würdeman in .Net nicht per StringOperationen abhandeln.
    danke für all die antworten, vor allem von RodFromGermany. genau so wollt ich das eigentlich haben :D

    @ErfinderDesRades: doch eigentlich geht es schon darum. wie sollte man es denn sonst abhandeln ?!

    bei mir kommt irgendwann dann z.b. sowas...

    VB.NET-Quellcode

    1. Select Case Convert.ToString(x.eeprom(adress_of_byte2), 2)
    2. Case failure_bits2_bit0
    3. write_to_console(eeprom_error_name & " - " & failure_bits2_bit0_name)
    4. Debug.Print("#01 Byte2")
    5. Case failure_bits2_bit1
    6. write_to_console(eeprom_error_name & " - " & failure_bits2_bit1_name)
    7. Debug.Print("#02 Byte2")
    8. Case failure_bits2_bit2
    9. write_to_console(eeprom_error_name & " - " & failure_bits2_bit2_name)
    10. Debug.Print("#03 Byte2")
    11. Case failure_bits2_bit3
    12. write_to_console(eeprom_error_name & " - " & failure_bits2_bit3_name)
    13. Debug.Print("#04 Byte2")
    14. Case failure_bits2_bit4
    15. write_to_console(eeprom_error_name & " - " & failure_bits2_bit4_name)
    16. Debug.Print("#05 Byte2")
    17. Case failure_bits2_bit5
    18. write_to_console(eeprom_error_name & " - " & failure_bits2_bit5_name)
    19. Debug.Print("#06 Byte2")
    20. Case failure_bits2_bit6
    21. write_to_console(eeprom_error_name & " - " & failure_bits2_bit6_name)
    22. Debug.Print("#07 Byte2")
    23. Case failure_bits2_bit7
    24. write_to_console(eeprom_error_name & " - " & failure_bits2_bit7_name)
    25. Debug.Print("#08 Byte2")
    26. End Select
    Wenn ich Sie jetzt um Sex bitten würde – wäre Ihre Antwort die gleiche, die Sie auf diese Frage geben? ;)
    Du kannst die jeweiligen Werte mittels einen Bitshifts erzeugen, und zwar als Integer, also als Zahl (das, was sie auch sind, keine Strings). Da hat dir ErfinderDesRades schon gezeigt, wies geht.
    Ob dann ein jeweiliges Bit gesetzt ist kannst du mit Bitwise-And prüfen, das funktioniert genauso wie bei einer Enumeration mit dem Flags-Attribut, dann das ist im Prinzip ja auch nur ein Integer.