Arduino int in 2x byte wandlen

Gast #3484246
Lesenswert?

Hallo bräuchte mal wieder eure hilfe.

Ich möchte aus einer Integer zahl mit komma 2 byte declarationen machen.

das ganze sieht wie folgt aus


int weg[] = {35,23};

jetzt möchte ich im Loop den Weg abfragen und dieser soll jetzt wie 
folgt aufgeschlüsselt werden

weg           ( byte länge, byte breite)

35,23                  35          23

so in etwa.
Gast #3484315
Lesenswert?

Mir wäre daniels variante auch lieber.


allerdings hab ich mehrere wege. gibt es da auch einen allgemein befehl.

zb.

int weg[] = {35,23};
int weg1[] = {12,23};
int weg2[] = {27,6};

char laenge;
char breite;

while(0) {
    laenge = [0];
    breite = [1];
}




so das ich im loop nur den weg weg1 oder weg2 benenne und dann die 
zahlen im array nach laenge und breite ausgegeben werden
(Firma: keine) #3484335
Lesenswert?

marc2805 schrieb:
> so das ich im loop nur den weg weg1 oder weg2 benenne und dann die
> zahlen im array nach laenge und breite ausgegeben werden

Ich verstehe das ehrlich gesagt nicht ganz. Willst du zur Laufzeit 
entscheiden welches der Arrays ausgegeben werden soll? Das wäre wie 
folgt möglich (keine Garantie, dass der Code compilierbar ist):
1
int weg[] = {35,23};
2
int weg1[] = {12,23};
3
int weg2[] = {27,6};
4

5
char laenge;
6
char breite;
7

8
int *pWeg;
9

10
...
11

12
switch(selectedWeg) {
13
    case 0:
14
        pWeg = weg;
15
        break;
16
    case 1:
17
        pWeg = weg1;
18
        break;
19
    case 2:
20
        pWeg = weg2;
21
        break;
22
    default:
23
        pWeg = weg;
24
        break;
25

26

27
while(0) {
28
    laenge = *pWeg;
29
    breite = *(pWeg + sizeof(int));
30
}
Gast #3484413
Lesenswert?

marc2805 schrieb:
> Hallo bräuchte mal wieder eure hilfe.
>
> Ich möchte aus einer Integer zahl mit komma 2 byte declarationen machen.

Wirrkopf.
Versuche doch BITTE !!!! zu allererst mal deine wirren Gedanken so in 
Form zu bringen, daß man verstehen kann, was dir eigentlich im Kopf 
herumgeht.

Also:
Eine Integerzahl hat KEIN Komma. Entweder ist sie 35 oder 23, aber 
niemals 35,23.

Wenn du 2 Bytes zusammen haben willst, dann deklariere dir einen Struct 
so etwa wie dieser:
struct TPoint
{ byte x;
  byte y;
};

und ne Variable dazu
struct TPoint MyPoint;

und benutze diese Variable dann nach Gutdünken, z.B.
MyPoint.x = 24;
MyPoint.y = 38;

Ich hab's bislang nicht wahrhaben wollen, was für verheerende Folgen 
dieses Arduino-Zeugs auf lange Sicht hat. Daa Blinky aus den 
Demo-Beispielen kriegt zwar jeder Akolyth binnen 5 Minuten zum Blinken, 
aber direkt dahinter kommt die geistige Wüste, die sich selbst darin 
äußert, daß die Arduino-Bastler es nicht einmal schaffen, ihre Gedanken 
in eine verstehbare Form zu bringen. Was soll bloß DARAUS werden?

Ich halt mich derweil lieber an eine 2010er Kanzler Spätlese, da hat man 
mehr davon.

W.S.
Gast #3484429
Lesenswert?

Schmeiß doch mal eine Pupille auf die grundlegenden Datentypen in C.

mit:

>int weg[] = {35,23};

deklarierst Du zwei Integerzahlen und initialisierst sie mit den Werten 
35 [0] und 23 [1].


Kannst Du aber später mittels

>char laenge;

diese einem char-Wert zuweisen, stellt sich mir die Frage:

Warum nicht gleich

char weg[] = {35,23};

Den größeren Wertebereich der Ausgangszahlen kannst Du ja doch nicht 
ausnutzen, wenn Du sie später in einen char stopfst bzw. stopfen kannst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren