Forum: Compiler & IDEs zwei char array einträge in short variable packen


von Florian (Gast)


Lesenswert?

Hallöchen,

ich würde gerne zwei char-Werte aus meinem Array in einer Variablen vom 
Typen short speichern, weiß aber noch nicht so ganz, wie ich das machen 
muss.

mein Array: char array[2] = {0,2}
mein Wert in der short variablen soll danach wie folgt aussehen: short 
temp = 2.

Danke schonmal im Voraus:)

Florian

von Sebastian V. (sebi_s)


Lesenswert?

1
short temp = (array[1] << 8) | array[0];

von Florian (Gast)


Lesenswert?

Danke für die schnelle Antwort. Wenn ich genau das mache bekomme ich 
12848 in meiner Variablen als Wert heraus.

von Florian (Gast)


Lesenswert?

kann es sein, dass er statt der 0 und der 2 die dazugehörigen Asciiwerte 
nimmt, also für 0 die 48 und für 2 die 50? Wenn ja, wie kann ich das 
unterbinden?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Sebastian V. O. schrieb:
>
1
short temp = (array[1] << 8) | array[0];

Genau andersherum, denn es soll ja 2 als Ergebnis herauskommen:

short temp = (array[0] << 8) | array[1];

Es empfiehlt sich, hier prinzipiell mit unsigned zu arbeiten, sonst 
bekommt man bei "negativen" Werten ungewollte Effekte.

von Fritz G. (fritzg)


Lesenswert?

Ja, so ist es, grad getestet. Aber dazu muss man schreiben:
1
    char array[2] = {'0','2'};
Wenn du den Wert irgendwo als ASCII her hast, dann ist es einfach
1
    short temp = ((array[0]-'1') << 8) | (array[1]-'0');

von Florian (Gast)


Lesenswert?

Wunderbar, ich danke euch für eure schnelle Hilfe. Jetzt klappt alles:)

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
Noch kein Account? Hier anmelden.