# byte = 0xFF



## Freak2k (29. Dezember 2005)

Hallo,

warum kann ich einem byte nicht den wert 0xff zuweisen?
es geht um ein netzwerk protokoll und somit um kompatiblität zu clients in anderen sprachen. also kann ich nicht einfach einen anderen datentyp nehmen.

danke


----------



## Matthias Reitinger (29. Dezember 2005)

Primitive Ganzzahldatentypen werden in Java grundsätzlich vorzeichenbehaftet interpretiert. Nichtsdestotrotz kann ein Byte den Hexadezimalwert FF annehmen – es wird halt nur vorzeichenbehaftet interpretiert.


----------



## Freak2k (30. Dezember 2005)

die zuweisung

```
byte bla = 0xFF;
```

funktioniert garnich
-> possible loss of precission


----------



## Thomas Darimont (30. Dezember 2005)

Hallo!



> funktioniert garnich
> -> possible loss of precission


Ganzzahlige Literale werden immer als int interpretiert. Du musst sie in dem fall in byte casten, wobei durch den beschraenkten Wertebereich von byte aus 0xFF (=255) -1 wird.


```
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas
 *
 */
public class ByteExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		byte b = (byte)0xff;
		System.out.println(b);
		
		System.out.println(Byte.MIN_VALUE + " -> " + Integer.toHexString(Byte.MIN_VALUE));
		System.out.println(Byte.MAX_VALUE + " -> " + Integer.toHexString(Byte.MAX_VALUE));
	}

}
```

Gruss Tom


----------



## Freak2k (30. Dezember 2005)

ok,

aber da ich auf ein bestehendes Protokoll aufsetze, muss ich ein bytes senden können, deren wert größer als 127 (0x7F) ist...


----------



## Thomas Darimont (30. Dezember 2005)

Hallo!

 Dann schrieb doch einfach mal (byte)-1 in den Stream... (die Binäre Repräsentation von -1 als byte ist 11111111) wenn also das geschriebene byte auf der "anderen" Seite als Vorzeichenlos interpretiert wird hast du deine 255.

   Gruß Tom


----------

