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]