Re: char array to long

Stefan Hundhammer <[email protected]>
Newsgroups gmane.linux.suse.programming
Organization SuSE Linux AG
Message-ID <[email protected]>
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 <[email protected]>                Penguin by conviction.
YaST2 Development
SuSE Linux AG
Nuernberg, Germany

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    [email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.