-
-
Neuer Benutzer
Öfters hier
int später wieder zusammensetzen (c#)
hallo,
ich weiß es passt nicht wirklich hierher, aber ich habe folgendes problem...
schicke ein signed int32_t über die serielle schnittstelle an den pc.
dort lese ich mit einer in c# geschreibenen software wieder aus.
habe ursprünglich das zusammensetzen der 8bit werte zu einem 32 bit zahl ursprünglich so gelöst:
byte[] buffer = new byte[20];
int lleistung = 0;
lleistung = buffer[13];
lleistung += (buffer[12] << ;
lleistung += (buffer[11] << 16);
funktiniert auch gut, solange nur positive zahlen ankommen. ist logisch, da ja die zahlen im zweierkompliment vorliegen... habe mir dann gedacht so müsste es gehen.
lleistung = (int)((buffer[11] << 24) & (buffer[12] << 16) & (buffer[13] << & (buffer[14]));
lleistung ist aber immer 0.
wie macht man das richtig?
vielen dank
-
Erfahrener Benutzer
Robotik Einstein
Ein & ist was anderes als ein +.
Wenn du sowas wie (buffer[11] << 24) & (buffer[12] << 16) machst und buffer ist jeweils ein Byte, dann kommt immer 0 raus, da & ein logisches AND ist.
-
RN-Premium User
Begeisterter Techniker
Du mußt die Teilzahlen verodern... nicht mit und
weil du erzeugst ja folgendes:
10010000 00000000 00000000 00000000 (mit <<24)
00000000 01001001 00000000 00000000 (mit <<16)
und haben willst du:
10010000 01001001 00000000 00000000
das erreichst du mit | also oder
lg
Alex
-
Neuer Benutzer
Öfters hier
ach ja genau stimmt....
danke vielmals
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen