Nach Michael Petrottas Kommentar zu Ihrer Frage müssen Sie entscheiden, welche Bits im 8-Bit-Byte für das resultierende boolesche Array getestet werden sollen. Nehmen wir zu Demonstrationszwecken an, Sie möchten die vier rechten Bits, dann sollte so etwas funktionieren:
%Vor% Die hexadezimalen Werte ( 0x01
, 0x02
usw.) in diesem Beispiel sind spezielle Bitmasken, bei denen nur ein einzelnes Bit an der gewünschten Stelle gesetzt ist; Also hat 0x01 nur das am weitesten rechts liegende Bit, 0x08 hat nur das Bit von rechts nach rechts gesetzt. Durch Testen des gegebenen Bytes gegen diese Werte mit dem bitweisen AND-Operator ( &
) erhalten Sie diesen Wert zurück, wenn das Bit gesetzt ist, oder Null, wenn nicht. Wenn Sie andere Bits als die rechten vier überprüfen möchten, müssen Sie verschiedene Bitmasken erstellen.
Andere richten einen sehr gültigen Punkt ein: Byte.SIZE == 8
. Das heißt, es gibt 8 Bits in byte
. Sie müssen definieren, wie Sie 8 Bits in 4 boolean
-Werte abbilden möchten. Ansonsten können wir nur raten, was Sie versuchen zu tun.
BitSet
Unabhängig davon, wie Sie diese Zuordnung vornehmen, ist es jedoch unwahrscheinlich, dass boolean[]
wirklich die beste Darstellung ist. Ein java.util.BitSet
könnte besser sein. Hier ist ein Beispiel:
Der obige Code verwendet die Standard-Bit-Prüfmethode, um byte
in BitSet
zu konvertieren. Beachten Sie, dass für ein (byte) 10
die Bits 1 und 3 gesetzt sind (d. H.% Co_de%, wobei 10 = 2^1 + 2^3
für die Potenzierung steht).
Das Beispiel zeigt auch, wie eine ^
/ Vereinigungsoperation für or
ausgeführt wird.
BitSet
Möglicherweise ist eine andere anwendbare Datenstruktur eine EnumSet
, Dies ist eine EnumSet
Implementierung, die für Set
optimiert wurde. Hier ist ein Beispiel:
enum
anstelle von Bitfeldern