Datum:
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
Datum:
Dann brauchst du einen 64-Bit Integer, damit 4x16Bit reinpassen:
uint16_t buf[4]; uint64_t myInteger; myInteger = buf[0]; myInteger |= (uint64_t)buf[1]<<16; myInteger |= (uint64_t)buf[2]<<32; myInteger |= (uint64_t)buf[3]<<48; |
Datum:
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!
Datum:
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.
Datum:
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...
Datum:
Ich wette, das 'Array' ist in Wirklichkeit eigentlich ein Text-String.
Datum:
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...
Datum:
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.