Hallo allesamt,
ich muss für die Schule einen Client in C schreiben, der über Sockets
zwei Integer Werte an einen Server übermittelt.
Das Verbinden und Senden funktioniert einwandfrei. Jedoch wurde dem
Server eine "merkwürdige" Funktion implementiert. Und zwar sollen die
beiden Integerzahlen in einem Buffer übermittelt werden und
folgendermaßen entpackt werden:
1 | void entpackeWerte(unsigned char *buffer, unsigned int *x, unsigned int *y)
|
2 | {
|
3 | *x = (buffer[0] << 8) | buffer[1];
|
4 | *y = (buffer[2] << 8) | buffer[3];
|
5 | }
|
Ich verstehe das nicht ganz. Beispiel:
Sagen wir der Wert x ist eine 2 (bzw 00000010) am Client. Ich sende
diese Zahl via buffer[1] an den Server und er macht erstmal eine
Linksverschiebung um 8 bits:
x = 00000010 00000000
Egal welche Zahl jetzt in buffer[1] steckt.. ich bekomme auch mit dem
|-Operator doch MINIMAL einen Wert von 100000000. Also kann das nicht
die Lösung sein.
Sende ich die Zahl 2 im buffer[1] und sage buffer[0] = 0, dann erhalte
ich garkeinen Wert.
Kann mir jemand helfen?
Danke!
Kann mir jemand