Der von die gepostete Code fällt in die zweite von mir angegebene Variante (Konvertieren ind ASCII-Format) und benötigt zwar einige Rechenoperationen, aber er erfüllt seinen Zweck (da der Wert 0x00 nicht mehr auftreten kann) und das ist das Wichtigste
Ein paar kleine Möglichkeiten zur Optimierung sind mir noch aufgefallen.
1) Die Variable datahexchar wird eigentlich gar nicht gebraucht:
Code:
for(i=4;i>0;i--)
{
datahexchar[i-1] = hex[data[i-1]];
*Adress = datahexchar[i-1];
Adress++;
}
wird zu
Code:
for(i=4;i>0;i--)
{
*Adress = hex[data[i-1]];
Adress++;
}
2) Die aufwendigen Multiplikationen und Divisionen lassen sich, weil durch Zahlen dividiert wird welche ein Vielfaches von 2 darstellen, durch Schiebeoperationen ersetzen:
Code:
data[3] = Wert / 4096;
wird zu
Code:
data[3] = Wert >> 12; // 2¹² = 4096
und
Code:
Wert = Wert - (data[3] * 4096);
wird zu
Code:
Wert = Wert - (data[3] << 12);
Alternativ lässt sich die Operation meiner Meinung nach auch über den Modulus-Operator anschreiben:
Code:
Wert = Wert % 4096;
Das sind aber nur mehr kleine Anregungen, im Grunde funktioniert deine Lösung ja
Lesezeichen