Forum: PC-Programmierung Convert char[] to uint16


von Prog R. (daniel_v)


Lesenswert?

Hallo,

ich stehe momentan vor folgendem Problem:

mittels ifstream (c++) lese ich ein File zeilenweise in ein char-Array, 
das 16 Werte enthält.
Sieht dann so etwa aus:
010001101011010

Nun würde ich diesen Wert (also den gesamten Binärwert, der angezeigt 
wird) gerne in einen uint16_t konvertieren, nur stehe ich da voll auf 
der Leitung.

Ein Typecast geht ja logischerweise nicht direkt....

Im Voraus schon danke für Tipps

von Peter II (Gast)


Lesenswert?

uint16_t r = a[0]<<8 | a[1];

oder halt andersrum.

von Oliver S. (oliverso)


Lesenswert?

Peter II schrieb:
> uint16_t r = a[0]<<8 | a[1];

Who the fxxx is a?

Daniel V. schrieb:
> Sieht dann so etwa aus:
> 010001101011010

Da geht nur der Weg zu Fuß:
Zeichen für Zeichen mit '1' vergleichen, und die passenden 
Zweierpotenzen aufaddieren.

Oliver

von Peter II (Gast)


Lesenswert?

Oliver S. schrieb:
> Who the fxxx is a?

> mittels ifstream (c++) lese ich ein File zeilenweise in ein char-Array,
eventuell das char Array?

von Arc N. (arc)


Lesenswert?

Falls sowas wie char str[] = "010001101011010" gemeint war...
Ginge z.B.
1
val = (uint16_t)strtol(str, NULL, 2);

: Bearbeitet durch User
von Prog R. (daniel_v)


Lesenswert?

Arc Net schrieb:
> Falls sowas wie char str[] = "010001101011010" gemeint war...
> Ginge z.B.
>
1
> val = (uint16_t)strtol(str, NULL, 2);
2
>

Danke mal an alle für die Antworten.

Die Lösung von Arc Net war genau das, was ich brauche.

lG

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.