byte = 0xFF

Freak2k

Erfahrenes Mitglied
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
 
Primitive Ganzzahldatentypen werden in Java grundsätzlich vorzeichenbehaftet interpretiert. Nichtsdestotrotz kann ein Byte den Hexadezimalwert FF annehmen – es wird halt nur vorzeichenbehaftet interpretiert.
 
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.

Code:
/**
 * 
 */
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
 
ok,

aber da ich auf ein bestehendes Protokoll aufsetze, muss ich ein bytes senden können, deren wert größer als 127 (0x7F) ist...
 
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
 
Zurück