Announcement

Collapse
No announcement yet.

Unterschied Or (VB.NET) und | (c#)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unterschied Or (VB.NET) und | (c#)

    Hallo,

    ich habe folgende Zeile Code (VB.NET)

    Code:
    buf(byteIdx) = buf(byteIdx) Or CByte(1 << (7 - (y Mod 8)))
    wenn ich diese 1:1 übersetzte in c#, müsste diese ja lauten:

    Code:
    buf[byteIdx] = buf[byteIdx] | Convert.ToByte(1 << (7 - (y % 8)));
    So.. von dem mal abgesehen dass ein Fehler kommt (Der Typ int kann nicht in byte konvertiert werden...) macht diese Zeile auch keinen Sinn für mich. Fakt ist: In VB.NET funktioniert der Code, in C# nicht. Kann mir wer helfen? Stehe gerade voll am Schlauch...

    Danke!!
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

  • #2
    Hallo,

    [highlight=c#]
    buf[byteIdx] = (byte)(buf[byteIdx] | (1 << (7 - (y % 8))));
    [/highlight]

    Der ganze Teil rechts ergibt ein int und das muss zum byte gecastet werden.

    Tipp: mit einem Reflector wie ILSpy kannst du komplexere "Sachen" zwichen den .net-Sprachen "umwandeln".

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Cool, danke! Funktioniert!!
      Aber zum Verständnis für mich: Was besagt diese "Oder" Prüfung genau? Was muss passieren, dass was passiert? (Wenn du verstehst was ich mein)

      MfG
      Die Taschenlampe!

      Die perfekte Taschenlampe für Ihr Windows Phone!

      - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
      - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


      Hier gehts zu APP!

      Comment


      • #4
        Hallo,

        der Buffer ist vom Datentyp byte, entspricht also einem Byte. Ein Byte besteht aus 8 bits. Um ein einzelnes Bit (in einem Byte) zu setzen geht das mit der Oder-Verknüpfung. 1 | 0 = 1 bzw. wahr | falsch = wahr im Sinne der Bool'schen Algebra.
        00000000
        00100000
        --------
        00100000

        Daher wird vor dem Oder die 1 (= 00000001) mit dem Shift-Operator << die entsprechende Stellen-Zahl nach links verschoben.

        Näher Infos z.B. [Artikel] Bitoperationen in C#

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X