Ich muß eine binär aufgebaute Datei auslesen. Dort gibt es ein Bitfeld (2 Byte gross).
Ich muss aus diesem Bitfeld einen Wert auslesen. Der steht in den Bits 0-12.
Wie kann ich das in VB !!! machen ??
Von Sculpture bekam ich den Tipp die 2-Byte in eine Long-Variable (TmpLong)
einzulesen und dann folgendes zu berechnen:
TmpLong AND 4095
Das klappt auch soweit, allerdings nur wenn in den Bits 0-12 Werte
Sind alle Bits geschaltet, so ergibt sich
2 hoch 0 => 1
2 hoch 1 => 2
…
2 hoch 7 => 128
Summe = 255
Ob ein bestimmtes Bit geschaltet ist, kannst du über die „AND“-Funktion ermitteln. Bei der zweiten Bitleiste würde
„If TmpLong and 10 …“ ergeben, daß die Bits 1 und 3 geschaltet sind. „If TmpLong and 2 …“ würde ergeben, daß das Bit 1 geschaltet ist (ohne Berücksichtigung des ebenfalls geschalteten Bits 3). „If TmpLong and 8“ würde ergeben, daß das Bit 3 geschaltet ist (und das Bit 1 würde nicht berücksichtigt).
Willst du nun die Konstellation der Bitleiste insgesamt überprüfen, müßtest du die 12 Bits in einer Schleife o.ä. abarbeiten und das Ergebnis entsprechend auswerten. Dann dürften auch keine Probleme mit größeren Werten auftreten:
Bsp.:
For lCount = 0 to 11
If TmpLong And 2^lCount Then
[Verarbeite irgendwas]
End If
Next lCount