Wie konvertiert man ein Byte in Bits?

7

Ich habe ein Array von Bytes. Ich möchte auf jedes der Bytes zugreifen und seinen äquivalenten binären Wert (von 8 Bits) haben, um die nächsten Operationen darauf auszuführen. Ich habe von BitSet gehört, aber gibt es andere Möglichkeiten, damit umzugehen?

Danke.

    
Supereme 04.11.2010, 09:53
quelle

6 Antworten

3
%Vor%     
Jigar Joshi 04.11.2010, 09:58
quelle
8

Wenn Sie nur die String-Repräsentation davon in binärer Form benötigen, können Sie einfach Integer.toString() mit dem optionalen zweiten Parametersatz für binary auf 2 setzen.

Um ein allgemeines Bit-Twiddling für jeden Integraltyp durchzuführen, müssen Sie logische Operatoren und Bitshiftoperatoren verwenden.

%Vor%     
MAK 04.11.2010 10:08
quelle
4

Sie finden unter http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/primitives/package möglicherweise ähnliche Informationen -summary.html "> Guava Primitives Paket.

Alternativ können Sie etwas wie

schreiben %Vor%

Das ist nicht getestet, aber die Idee ist da. Es gibt auch einfache Änderungen an den Schleifen / Zuweisungen, um ein Array von etwas anderem zurückzugeben (zB int oder long ).

    
Carl 04.11.2010 10:20
quelle
3

BitSet.valueOf (Byte [] Bytes)

Sie müssen sich vielleicht den Quellcode ansehen, wie er implementiert wird, wenn Sie nicht Java 7 verwenden

    
codeplay 04.11.2010 10:40
quelle
2

Java hat bitwise operators . Siehe ein Tutorial-Beispiel .

  

Die Java-Programmiersprache stellt auch Operatoren bereit, die bitweise und Bit-Shift-Operationen an integrierten Typen ausführen. Die in diesem Abschnitt besprochenen Operatoren werden weniger häufig verwendet. Daher ist ihre Abdeckung kurz; Die Absicht ist, Sie einfach darauf aufmerksam zu machen, dass diese Operatoren existieren.

     

Der unäre bitweise Komplementoperator "~" invertiert ein Bitmuster; Es kann auf jeden der Integraltypen angewendet werden, wobei jede "0" eine "1" und jede "1" eine "0" wird. Zum Beispiel enthält ein Byte 8 Bits; durch Anwenden dieses Operators auf einen Wert, dessen Bitmuster "00000000" ist, würde sein Muster in "11111111" geändert werden.

A byte value Ist ein Integral, Sie können den Bitzustand mithilfe von Maskierungsoperationen überprüfen. Das niedrigstwertige Bit entspricht der Maske 1 oder 0x1 , das nächste Bit entspricht 0x2 usw.

%Vor%     
gimel 04.11.2010 10:10
quelle
0

Nun, ich denke, ich verstehe, was du meinst. Nun ist ein ziemlich wesentlicher Fehler darin, dass es bei negativen Zahlen nicht funktioniert. Aber vorausgesetzt, Sie verwenden es nicht zum Lesen von Dateieingaben, können Sie es dennoch verwenden.

%Vor%     
Pizzamonkey 18.06.2017 06:27
quelle

Tags und Links