Moin, ich sitz vor folgendem Problem: Ich habe ein Array. Daraus sollen 4 Werte (Buffer[2],[3],[4],[5]) zu einem Integer zusammengefasst werden. In den einzelnen Arrayfeldern befindet sich jeweils nur eine Zahl zwischen 0 und 9. Diese sollen aber nich einfach addiert werden, sondern so wie sie im Array stehen, als 16bit INT übernommen werden. Wie macht man sowas? Vielen Dank an euch
Dann brauchst du einen 64-Bit Integer, damit 4x16Bit reinpassen:
1 | uint16_t buf[4]; |
2 | uint64_t myInteger; |
3 | |
4 | myInteger = buf[0]; |
5 | myInteger |= (uint64_t)buf[1]<<16; |
6 | myInteger |= (uint64_t)buf[2]<<32; |
7 | myInteger |= (uint64_t)buf[3]<<48; |
Aber in einem einzelnen Arrayfeld steht doch nur ein Byte? Also jeweils die Zahl 0-9. Und ich möchte halt einfach wenn das Array z.B. so aussieht: [S][L][3][6][1][9] Die Zahlen 3,6,1,9 in eine Variable x speichern als 3619. Vielen Dank schonmal für deine Mühen!
Wenn es Zahlen (0-9) sind: wert=10000*array[4]+1000*array[3]+100*array[2]+10*array[1]+array[0] Wenn es Buchstaben '0'-'9' sind vorher noch jeweils '0' (das ist eine Zahl!) abziehen.
Du musst uns schon sagen wie dein Array definiert ist. Aus deinem ersten Post könnte man leicht auf uint16_t myArray[] schließen. Ok, also ein Byte Array. uint16_t myInt; uint8_t myArray[4]; /* Array befüllen */ myInt = myArray[0] * 1000 + myArray[1] * 100 + myArray[2] *10 + myArray[3]; Sollte passen, falls ich deine Absicht richtig verstanden habe...
Karl Heinz Buchegger schrieb: > Ich wette, das 'Array' ist in Wirklichkeit eigentlich ein Text-String. Und jetzt geht es wieder los: Was ist eigentlich ASCII...
greo schrieb: > Ich habe ein Array. Daraus sollen 4 Werte (Buffer[2],[3],[4],[5]) zu > einem Integer zusammengefasst werden. > In den einzelnen Arrayfeldern befindet sich jeweils nur eine Zahl > zwischen 0 und 9. Falls du eine ASCII->Binär Wandlung machen willst, hilft dir atoi() aus der avr-libc. Stell aber sicher, dass der String 0-terminiert ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.