Hi,
und sorry für das Thema, aber was Besseres ist mir echt nicht eingefallen.
Ich bin gerade auf eine Funktion eines Kollegen von mir gestoßen, der leider gerade im Urlaub ist.
Die Funktion schreibt einen String in eine AMQ / JMS-Bytemessage und sieht so aus:
Ok, offensichtlich enthält der Anfang der Bytemessage die Länge der gesamten Payload.
Aber was macht denn
"strlen" wird "Oder" verknüft mit dem Hex-Wert 0x80000000, das seh ich richtig, oder?
Nur wieso?
und sorry für das Thema, aber was Besseres ist mir echt nicht eingefallen.
Ich bin gerade auf eine Funktion eines Kollegen von mir gestoßen, der leider gerade im Urlaub ist.
Die Funktion schreibt einen String in eine AMQ / JMS-Bytemessage und sieht so aus:
Code:
private void writeString(BytesMessage message, String s) throws JMSException {
int strlen = s.length();
if (strlen<128) {
message.writeByte((byte)strlen);
}
else {
message.writeInt(strlen|0x80000000);
}
for (int i = 0; i < strlen; i++) {
message.writeByte((byte)(s.charAt(i)));
}
}
Ok, offensichtlich enthält der Anfang der Bytemessage die Länge der gesamten Payload.
Aber was macht denn
Code:
message.writeInt(strlen|0x80000000);
"strlen" wird "Oder" verknüft mit dem Hex-Wert 0x80000000, das seh ich richtig, oder?
Nur wieso?