2017-11-18 8 views
-1

Ich muss einige Bits in einem Byte (readed von Datei) umkehren und in einer anderen Datei speichern. Ich finde keine Lösung auf Byte-Ebene?!?Byte-Bit-Manipulation mit Java

byte [] input = byte [8]; 
int count = inputStream.read (input); 

// now I want reverse f.e. on byte 4, the first 3 bits 
// examples (01010101 => 10110101 or 11000001 => 00100001) 


// then later I write 
outputStream.write (input); 

Thanx

+0

versuchen, in die Shift-Operatoren suchen. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html – robertf

Antwort

0

Sie können "Flip" Bits mit Bitmaske und XOR-Operator. Java XOR erzeugt int, also müssen Sie binäre AND mit 0xFF ausführen, um das erste Byte von 4 Byte int zu erhalten.

Beispielcode:

byte[] input = new byte[] {(byte) 0b11110000, 0b01011111}; 
int mask = 0b11100000; 

System.out.println(Integer.toBinaryString(0xff & input[0])); // 11110000 
System.out.println(Integer.toBinaryString(0xff & input[1])); // 01011111 

for (int i = 0; i < input.length; i++) { 
    input[i] = (byte) (0xff & input[i]^mask); 
} 

System.out.println(Integer.toBinaryString(0xff & input[0])); // 00010000 
System.out.println(Integer.toBinaryString(0xff & input[1])); // 10111111