# Byte-Array als Zeichenfolge ausgeben



## Kalleos (20. Jul 2008)

```
String s = "11011101 10101010 0010101 00010101".replace( " ", "" ); 
 
byte[] bs = new BigInteger( s, 2 ).toByteArray(); // [158,261,69,69] 
 
for ( byte b : bs ) 
  System.out.println( Integer.toBinaryString(b & 0xff) );
```
Den Code hab ich vom bekannten Ebook http://www.galileocomputing.de/openbook/javainsel7/javainsel_05_007.htm#t2t33 (bischen weiter oben)

Ich verstehe nicht, wieso am Ende jedes Byte mit & 0xff verknüpft wird.
0xff ist doch die Zahl 255 und entspricht 11111111.
Warum wird das angewendet?[/code]


----------



## SlaterB (20. Jul 2008)

es verhindet die Anzeige eines negativen int mit Länge 32, probier es doch mal ohne aus und sieh den Unterschied,
die Zahlen im Kommentar sind übrigens nicht korrekt

und eine der Bitfolgen im Ursprungsstring ist nur 7 lang was für einige Verschiebungen sorgen wird


----------



## Silmarillion (20. Jul 2008)

So, ich habe es geahnt und der Code gab mir Recht: 

```
import java.math.BigInteger;


public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String s = "11111111 10000001 10000001 10000001".replace( " ", "" );
		
		byte[] bs = new BigInteger( s, 2 ).toByteArray(); // [158,261,69,69]
		
		for ( byte b : bs )
		  
			System.out.println(b+ " "+ (b&0xff)+" "+Integer.toBinaryString(b & 0xff) );

	}

}
```

Der Wertebereich byte geht von -127 bis 127.
da 11111111 == -1 // das führende Bit zeigt, das die Zahl negativ ist.
Und durch b&0xff wird das Byte automatisch in ein Integer umgewandelt.
Somit kann der Wert dann korrekt angezeigt werden. Ich hoffe ich liege da richtig.
Vielleicht bestätigt das noch jmd.

Gruß

EDIT: SlaterB war schneller ^^


----------



## Guest (21. Jul 2008)

Hm. Danke für die Hilfe.
Rein zufällig bin ich bei demselben E-Book auf die Erklärung gestoßen, die genauer ausfällt.

http://www.galileocomputing.de/open...02_008.htm#mja3c564fcc60ef3c1bcd383a0e74754de
Bischen weiter runter auf:
Vorzeichenlose Zahlen in ein Integer und Char konvertieren.


----------

