Hallo!
Ich bin bei einem meiner Projekte auf ein Problem gestoßen:
Ich verwende einen Buffer, den ich per UART fülle:
unsigned char buffer[4];
Füllen:
1 | buffer[i]=UDR; // Das ganze 4 mal, i++
|
Nun möchte ich diese 4 Bytes in eine Zahl umwandeln. Dazu habe ich mir
eine Variable "zahl" als unsigned long deklariert und verwende
folgenden Code:
(i ist 0)
1 | zahl = (buffer[i] << 24) +
|
2 | (buffer[i+1] << 16) +
|
3 | (buffer[i+2] << 8) + (buffer[i+3]);
|
Meiner bisherigen Logik nach sollte das funktionieren.
Aber:
main.c:81: warning: left shift count >= width of type
main.c:82: warning: left shift count >= width of type
Warum?
Vielen Dank für einen Hinweis!