Byte in Int umwandeln

  • C#
  • .NET (FX) 1.0–2.0

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    @NudelHolz
    Meinst Du sowas?

    VB.NET-Quellcode

    1. For item As Int32 = 0 To 27
    2. Dim number As Byte = sps_daten(item)
    3. For bitnumber As Int32 = 0 To 7
    4. If (number And (2 ^ bitnumber)) <> 0 Then
    5. MessageBox.Show("In sps-byte " & item.ToString & " ist Bit " & bitnumber.ToString & " gesetzt.")
    6. End If
    7. Next
    8. Next

    NudelHolz schrieb:

    verstehe ich nicht direkt

    NudelHolz schrieb:

    C#-Quellcode

    1. sps_daten.stoernummer[i] = binRead.ReadByte();

    C#-Quellcode

    1. int intValue = binRead.ReadByte();
    wäre äquivalent
    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!
    Okay, ich habe dann doch eine andere Lösung gefunden, die funktioniert sogar super :)

    C#-Quellcode

    1. stoerumwandlung(sps_daten.stoernummer[0], 0);
    2. ///////////
    3. private void stoerumwandlung(byte b, int meldungsnr)
    4. {
    5. //Stoerreihe 0
    6. //Konvertiere bytes in string um, damit ein vegleich durchgeführt werden kann.
    7. //sps_daten.stoerreihe0 = sps_daten.stoernummer[0];
    8. bool[] temp = new bool[8];
    9. string[] myList = new string[8];
    10. if ((b & 1) != 0)
    11. {
    12. temp[0] = true;
    13. }
    14. if ((b & 2) != 0)
    15. {
    16. temp[1] = true;
    17. }
    18. if ((b & 4) != 0)
    19. {
    20. temp[2] = true;
    21. }
    22. if ((b & 8) != 0)
    23. {
    24. temp[3] = true;
    25. }
    26. if ((b & 16) != 0)
    27. {
    28. temp[4] = true;
    29. }
    30. if ((b & 32) != 0)
    31. {
    32. temp[5] = true;
    33. }
    34. if ((b & 64) != 0)
    35. {
    36. temp[6] = true;
    37. }
    38. if ((b & 128) != 0)
    39. {
    40. temp[7] = true;
    41. }
    42. for (int i = 0; i <= 7; i++)
    43. {
    44. if (temp[i] == true)
    45. {
    46. listBox1.Items.Add(sps_daten.stoermeldung[i]);
    47. }
    48. }
    49. }



    Mit dieser Funktion kann ich den Byte einfach auslesen und bekomme die meldungsnummer raus. Der Meldungsnummer habe ich eine Fehlermeldungsarray zugewiesen.

    Sieht dann so aus:


    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.
    Meine Güte, wie umständlich...

    C#-Quellcode

    1. [Flags()]
    2. private enum Störmeldung
    3. {
    4. KeineStörung = 0,
    5. Störung1 = 1,
    6. Störung2 = 2,
    7. Störung3 = 4,
    8. Störung4 = 8,
    9. Störung5 = 16,
    10. Störung6 = 32,
    11. Störung7 = 64,
    12. Störung8 = 128,
    13. }
    14. private void stoerumwandlung(byte b)
    15. {
    16. if (b != 0)
    17. {
    18. Störmeldung meld = (Störmeldung)b;
    19. string meldungen = meld.ToString();
    20. listBox1.Items.AddRange(meldungen.Split(','));
    21. }
    22. }
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Umlaute in Code ihhh. Und man verwendet Enums doch nicht für sowas, es mag zwar Grundsätzlich ein Enum sein, aber ein Enum ist nicht für string messages gedacht, voralem scheint Störmeldung etwas Richtung "2#00001000"...

    C#-Quellcode

    1. for (int i=0;i<8;i++)
    2. if ((b >>= 1) & 0x1 != 0)// oder if (b & (1 << i) != 0)
    3. ..AddRange(messages[i])

    dürfte auch performanter sein ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das ist wohl tatsächlich deutlich eleganter. Aber warum in Zeiten von Unicode keine Umlaute in Bezeichnern verwendet werden sollen, erschließt sich mir nicht. Ich hab jahrelang drauf gewartet und jetzt, da es endlich geht, soll ich weiterhin verzichten? Bäh...
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Ich finds vollkommen in Ordnung, wenn du in Englischen Wörtern Umlaute verwendest. Nur ist mir atm. keines bekannt, das welche hat.
    (Damit wollte ich sagen, dass ich es Bäh finde, wenn man in einer anderen Sprache als Englisch programmiert/Bezeichner benennt - Kommentare sind dann noch mal etwas anderes, aber auch da find ich Englisch besser, oder eben beides)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---