Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: Bits aus Byte-Array holen

  1. #1
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich steh grad mächtig auf´n Schlauch

    Ich hab einen Array der aus ca. 100 Bytes besteht,
    Ich muss aus einigen Bytes dieses Arrays einzelne Bits (Boolean)
    abfragen. Hab leider noch keinen Lösungsansatz, deshalb frag ich euch
    mal



    Entwicklungsumgebung: Visual Basic .Net
    Zitieren Zitieren Bits aus Byte-Array holen  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Nur so eine Idee... also ich habe es nicht getestet.
    Maskieren mit "AND" müsste doch gehn (ich kenne leider nur vb ohne .Net):


    Code:
    IF MyBYTE AND 16 THEN
      'tue was
      MyBit = True;
    ELSE
      MyBit = False;
    END IF
    If you open your Mind too much, your Brain will fall out.

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    In Delphi mach ich das byteweise so, das geht dann ja fast genauso in VB :

    Code:
              for BitNr := 0 to 7 do
              begin
                BinNeu := Byte and (1 shl BitNr);
                if BinNeu > 0 then
                begin
                ...
                end;
              end;
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #4
    Registriert seit
    14.01.2004
    Ort
    Hattorf
    Beiträge
    3.201
    Danke
    297
    Erhielt 311 Danke für 266 Beiträge

    Standard

    hallo,
    vielleicht hilft dir das:http://vb-tec.de/bitarray.htm
    mfg

    dietmar

    Nichts ist so beständig wie ein Provisorium.

  5. #5
    Avatar von MW
    MW ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Zitat Zitat von zotos Beitrag anzeigen
    Nur so eine Idee... also ich habe es nicht getestet.
    Maskieren mit "AND" müsste doch gehn (ich kenne leider nur vb ohne .Net):


    Code:
    IF MyBYTE AND 16 THEN
      'tue was
      MyBit = True;
    ELSE
      MyBit = False;
    END IF

    Habs mal zum test reingekloppt und es funktioniert so !!

    Dim test As Byte = CByte(TextBox1.Text)
    If test And 1 Then ' Bit 1
    ...
    End If
    If test And 2 Then ' Bit 2
    ...
    End If
    If test And 4 Then ' Bit 3
    ...
    End If
    If test And 8 Then ' Bit 4
    ...
    End If
    If test And 16 Then ' Bit 5
    ...
    End If
    If test And 32 Then ' Bit 6
    ...
    End If
    If test And 64 Then ' Bit 7
    ...
    End If
    If test And 128 Then ' Bit 8
    ...
    End If

  6. #6
    Avatar von MW
    MW ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    In Delphi mach ich das byteweise so, das geht dann ja fast genauso in VB :

    Code:
              for BitNr := 0 to 7 do
              begin
                BinNeu := Byte and (1 shl BitNr);
                if BinNeu > 0 then
                begin
                ...
                end;
              end;

    Und mit deiner For schleife kann es so aussehen, funktioniert auch
    Code:
    Dim binNeu As Boolean                                      ' hilfsbit
    Dim boolbyte(7) As Boolean                                ' erzeugter "Bitarray"
    Dim INByte As Byte = CByte(TextBox1.Text)         ' eingangs Byte 
     
    For BitNr As Byte = 0 To 7 Step +1
         binNeu = INByte And (1 << BitNr)
         If binNeu Then
              boolbyte(BitNr) = True
         End If
    Next BitNr


    Jetzt hab ich auch wieder nen Plan
    und muss mich nur für eine variante entscheiden
    Geändert von MW (25.02.2007 um 00:58 Uhr)

  7. #7
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    So sieht's bei mir in VBS aus...
    Das "Geheimnis" liegt in der ShiftAndMask Funktion. das Gegenstück wäre SetBitInTag oder ResetBitInTag...

    Dim TempLong, ZylinderIndex, Ergebnis

    TempLong = CLng(SmartTags("EcmRezeptur\AblaufIntern")(Adresse+1))

    For ZylinderIndex = 0 To 31
    ShiftAndMask TempLong,Ergebnis, ZylinderIndex, &H0001
    If Ergebnis Then
    SmartTags("EcmRezeptur\Aktion2ZylinderZurGs")(ZylinderIndex)=True
    Else
    SmartTags("EcmRezeptur\Aktion2ZylinderZurGs")(ZylinderIndex)=False
    End If
    Next

  8. #8
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ??? Bist du weitergekommen???

Ähnliche Themen

  1. Byte im DB in Bits auflösen
    Von SIMREU im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 11.03.2016, 09:58
  2. Bits in Byte setzen
    Von bass im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 14.07.2011, 14:42
  3. MW in MB wandeln bezw einzelne bits holen
    Von grünschnabel im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.07.2010, 07:34
  4. Bits aus Byte
    Von Reto im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 30.01.2007, 23:53
  5. Bits in temporäres Byte mappen und gesetzte Bits zählen
    Von yetibrain im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 16:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •