Umwandlung byte-array in double - c

Ich versuche, das numerisch (double) Wert aus einem byte-array mit 16 Elementen, wie folgt:

unsigned char input[16];
double output;
...
double a  = input[0];
distance = a;
for (i=1;i<16;i++){
    a = input[i] << 8*i;
    output += a;
}

aber es funktioniert nicht.
Es scheint, dass die temporäre variable, die das Ergebnis enthält von Links-shift speichern können nur 32 bits, weil nach 4 Schichtbetrieb von 8 bits, es überläuft.

Weiß ich, dass ich so etwas wie

a = input[i] * pow(2,8*i);

aber, für die Neugier, ich Frage mich, ob es irgendeine Lösung für dieses problem mit Hilfe der shift-operator...

  • Sie haben nicht gesagt, was "input[16]" ist darzustellen versuchen. Ist es eine 128-bit-integral-Wert, oder etwas anderes?
  • Speichern Sie die Nummer in "input" in form einer 128-bit unsigned integer?
  • aus seinen Algorithmus es scheint, dass die Zeichen, die Koeffizienten in einer 15-Ter Ordnung Polynom (mit Basis 256). (@paolo_, ist das richtig?)
  • wie sagte Adrian P., der Eingang[16] ein Vektor ist eine Folge von bits, die will ich darstellen, wie eine 128-bit-Ganzzahl ohne Vorzeichen
InformationsquelleAutor paolo_ | 2009-08-19
Schreibe einen Kommentar