On Thursday 19 August 2004 16:59, Jan Hendrik Berlin wrote:
Ich hab ein Programmiertechnisches Problem! Wie bekomme ich aus einem char array einen Long Wert?
Mein Vorschlag:
char c[4]; long l;
l=0; l=c[0]; l=l+(c[1]*0x100); l=l+(c[2]*0x10000); l=l+(c[3]*0x1000000);
Nur leider funkrioniert das nicht so ganz.. Ich könnte auch einen anderen variablen Typ anstatt char nehmen! Muss nur genau ein Byte groß sein! (Ich hab ne x86_64 architektur, macht das einen unterschied?)
Du bist Dir hoffentlich klar darüber, daß Du Dir alle möglichen Probleme mit
Byte-Order und Wortbreite der verwendeten Architektur einhandelst?!
Tu' solche Sachen nur, wenn Du _sehr_ genau weißt, was Du tust - am besten
erklär' doch mal, was Du damit eigentlich vorhast.
Im übrigen hast Du zwar das Horner-Schema richtig angewendet, aber statt einer
teuren Multiplikation sollte man hier besser einen Links-Shift um 8 Stellen
verwenden:
l=c[0];
l <<= 8;
l += c[1];
l << = 8;
...
Auf die Reihenfolge habe ich hier jetzt absichtlich nicht geachtet, denn das
ist wirklich architekturabhängig - damit machst Du Dein Programm im höchsten
Maß unportabel.
CU
--
Stefan Hundhammer