www.mikrocontroller.net

Forum: GCC Arrayinhalt zu Integer


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: greo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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

Autor: Thomas Decker (t0mmy)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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;


Autor: greo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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!

Autor: trivial (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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.

Autor: blubb (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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...

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ich wette, das 'Array' ist in Wirklichkeit eigentlich ein Text-String.

Autor: Pako (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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...

Autor: Tom M. (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net