Stefan Hundhammer schrieb:
On Thursday 19 August 2004 16:59, Jan Hendrik Berlin wrote: [...]
l=0; l=c[0]; l=l+(c[1]*0x100); l=l+(c[2]*0x10000); l=l+(c[3]*0x1000000); [...] Im übrigen hast Du zwar das Horner-Schema richtig angewendet,
Hat er eben nicht!
aber statt einer teuren Multiplikation sollte man hier besser einen Links-Shift um 8 Stellen verwenden:
Das macht eigentlich jeder Compiler, der sein Geld wert ist, von sich aus, wenn er eine Multiplikation mit einer konstanten Zweierpotenz sieht.
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.
Oder gerade erst portabel - wenn nämlich die Bytereihenfolge extern vorgegeben und unabhängig von der Maschinenarchitektur ist. -- Tilman Schmidt t.schmidt@phoenixsoftware.de Phoenix Software GmbH Tel. +49 228 97199 0 Adolf-Hombitzer-Str. 12 Fax +49 228 97199 99 53227 Bonn, Germany http://www.phoenixsoftware.de