Hallo, ich benutze grad einen Netzwerkcode (UDP) von anderer Stelle und verstehe ihn leider wider Erwarten doch nicht vollständig.
1, Wozu muss ich lower und higher Byte definieren und wofür brauch ich das?
2, allgemein: Was passiert hier? Ich kenn mich mit den unären Operatoren grundsätzlich aus, das hier versteh ich trotzdem nicht :/
[highlight=Java]
//ok, ein Buffer mit 256 * 8 Bits. Alles klar soweit.
byte[] buffer = new byte[256];
// Warum sollte das highbyte je kleiner als 0 sein, und was würde das bedeueten?
// Wenn es kleiner als 0 ist, dann wird hier offensichtlich das Byte bis zum Rand mit // 1en befüllt, richtig?
int highByte = (buffer[0] < 0) ? buffer[0] + 256 : buffer[0];
int lowByte = (buffer[1] < 0) ? buffer[1] + 256 : buffer[1];
// ?
int length = (highByte << 8) | lowByte;[/highlight]
und hier:
[highlight=Java]
int length = string.length();
// man holt sich das erste Byte des length Integers.. warum?
int lowByte = length & 0xFF;
// ?
int highByte = ((length - lowByte) >> 8) & 0xFF;
byte[] buffer = new byte[256];
buffer[0] = (byte) highByte;
buffer[1] = (byte) lowByte;[/highlight]
1, Wozu muss ich lower und higher Byte definieren und wofür brauch ich das?
2, allgemein: Was passiert hier? Ich kenn mich mit den unären Operatoren grundsätzlich aus, das hier versteh ich trotzdem nicht :/
[highlight=Java]
//ok, ein Buffer mit 256 * 8 Bits. Alles klar soweit.
byte[] buffer = new byte[256];
// Warum sollte das highbyte je kleiner als 0 sein, und was würde das bedeueten?
// Wenn es kleiner als 0 ist, dann wird hier offensichtlich das Byte bis zum Rand mit // 1en befüllt, richtig?
int highByte = (buffer[0] < 0) ? buffer[0] + 256 : buffer[0];
int lowByte = (buffer[1] < 0) ? buffer[1] + 256 : buffer[1];
// ?
int length = (highByte << 8) | lowByte;[/highlight]
und hier:
[highlight=Java]
int length = string.length();
// man holt sich das erste Byte des length Integers.. warum?
int lowByte = length & 0xFF;
// ?
int highByte = ((length - lowByte) >> 8) & 0xFF;
byte[] buffer = new byte[256];
buffer[0] = (byte) highByte;
buffer[1] = (byte) lowByte;[/highlight]