PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Konvertierung zwischen int und byte


Gast
2007-04-17, 17:14:22
Hi Leute,

ich möchte in Java eine Konvertierung zwischen int-Werten im Intervall [0,+255] und byte schreiben, wobei int-Werte aus dem Intervall [+128,+255] als byte-Werte im Intervall [-128,-1] codiert werden (Wertebereich von byte ist [-128,+127], unsigned byte gibt es in Java nicht), sozusagen bei der Konvertierung nach byte als Zweierkomplementdarstellungen negativer Zahlen behandelt werden.

Die Konvertierung in die eine Richtung, von int nach byte, kriege ich noch hin:

int intValue = 175;
byte byteValue = 0xffffff00 | intValue;

aber für die Rückkonvertierung finde ich irgendwie keine Plan. Könnt ihr mir helfen?

Monger
2007-04-17, 17:23:33
Vielleicht sitze ich ja grade auf dem Schlauch, aber was spricht denn gegen:

if(intValue > 127){
byte byteValue = intValue - 256;
}

?

Gast
2007-04-17, 17:41:31
Vielleicht sitze ich ja grade auf dem Schlauch, aber was spricht denn gegen:

if(intValue > 127){
byte byteValue = intValue - 256;
}

?
vielleicht daß es für eine Konvertierung von byte nach int wenig Sinn macht, aus einem int-Wert einen byte-Wert zu errechnen? ;)
Egal, ich denke ich hab inzwischen die Lösung:

int intValue = byteValue & 0x000000ff;

Gast
2007-04-17, 17:52:08
richtigerweise muß man natürlich zuerst auf den Datentyp int konvertieren und danach erst bitweises Und machen:

int intValue = ( (int) byteValue ) & 0x000000ff;

HellHorse
2007-04-17, 22:58:15
int intValue = ( (int) byteValue ) & 0x000000ff;

coercion nach int kannst du dir sparen

int intValue = byteValue & 0x000000ff;

reicht. Eine IDE würde dir das anzeigen.