Byte[] to String, doch bits sind gespiegelt (MSB/LSB)

  • Themenstarter Themenstarter Luxamula
  • Beginndatum Beginndatum
L

Luxamula

Gast
Hi,

ich bekommen aus einer Netzwerkquelle ein Byte[], das ich Byte Spiegeln möchte. Soweit so einfach.
Java:
String(byte[] bytes, int offset, int length)
Leider sind dank der Netzwerkübertragung noch gespiegelt (also MSB/LSB getaucht)
Ich leide keine Möglichkeit gefunden die Bits zu drehen... 4 oder 8 Byte mag es ja noch mit der
Java:
.reserveByte
funktion von
Java:
Long
oder oder
Java:
Interger
funktion mit verschiedenen
Java:
cast
funktionen. Bei einer ungraden anzahl leider nicht 🙁.

Ich hofe ich habe mich nicht zu unverständlich ausgedürckt...
ICh wüsnche euch noch einen schönen abend!!

Viele Grüße,....
 
ich bin mir jetzt nicht 100% sicher was du suchst, aber glaube du brauchst Bitoperatoren:

Java:
public class BytesSpiegeln {
	public static void main(String[] args) {
		/*
		 * Aus 1011001 wird 0100110
		 */
		
		byte b = 89;
		System.out.println(b);
		System.out.println(~b);
		
		
		System.out.println(Integer.toBinaryString(b)); // Ausgabe hat keine führenden Nullen
		System.out.println(Integer.toBinaryString(~b)); // Zuvor "fehlende" führende Nullen werden zu 1. 
		
		
		
	}
}
 
Zuletzt bearbeitet:
Also das aufgrund einer Übertragung einzelne Bits gedreht sind, wage ich mal zu bezweifeln.
Wenn ich richtig liege, ist das ein Fall für ByteBuffer und ByteOrder. Ansonsten kannst du mit
Java:
int bl = buffer.length / 2;
byte tmp;
for(int n = 0; n < bl; n++) {
  tmp = buffer[n];
  buffer[n] = buffer[buffer.length - n - 1];
  buffe[buffer.length - n - 1] = tmp;
}
den gesamten Buffer drehen. Bitweises reversieren von Bytes ist in Java anscheinend nicht so trivial wie gedacht. Die Tilde (~) jedenfalls bedeutet NOT und dreht lediglich den Zustand der einzelnen Bits, reversiert wird da nichts.
 

Zurück
Oben