Warum kann ich keine Bytes in Java addieren?
byte aByte = (byte) a;
byte bByte = (byte) b;
byte cByte = (byte) c;
byte dByte = (byte) d;
byte eByte = (byte) e;
byte fByte = (byte) f;
byte gByte = (byte) g;
byte hByte = (byte) h;
System.out.println (aByte);
System.out.println (bByte);
byte SumByte = aByte + bByte;
System.out.println (SumByte);
Die Variablen a bis h sind haben verschiedene Typen und da ich sie als Bytes addieren muss, habe ich sie auch in Bytes umgewandelt. Das Problem ist: ich kann sie trotzdem nicht addieren (der Wertebereich wird nicht überschritten, da aByte 14 und bByte 24 sind). Es kommt die folgende Fehlermeldung:
Error:(88, 30) java: incompatible types: possible lossy conversion from int to byte
Warum? Das ergibt für mich keinen Sinn.
2 Antworten
Du musst es das Ergebnis explizit in byte casten. Java wandelt sicherheitshalber Ergebnisse in int um wenn zur Laufzeit der Wert nicht feststeht um eben keine Wertbereichsüberschreitung zu riskieren.
Danke, es hat funktioniert :D
byte SumByte = (byte) (aByte + bByte + cByte + dByte + eByte + fByte + gByte + hByte);
Begründung, beim addieren von 2 Byte variablen entsteht ein Integer Wert...
Ok, kannst du mir dann verraten, welchen Wert jeweils die Variablen a bis h haben?
Ja, das Ganze schaut folgendermaßen aus:
int a = 0xe;
int b = 030;
long c = 18L;
double d = 4.44e1;
double e = 55.5;
double f = 66e-1f;
float g = 7.7f;
char h = 'F';
Mir ist schon klar, dass ich einen Überlauf haben werde wenn ich alles addiere, aber warum scheitert das schon bei 14 + 24?
Bei:
byte SumByte = aByte + bByte;
Die Fehlermeldung ist sinnlos, beide sind vom Typ byte
http://stackoverflow.com/questions/8120439/getting-the-wrong-number-when-converting-from-byte-to-int
Versuchs mit nem ByteBuffer, vielleicht klappts
Ne verrückte Idee, was, wenn du die Summe nochmal als byte castest.
Wie gesagt, der Wertebereich von 128 wird nicht überschritten, das Ergebnis wäre 38 :/