Ich brauche zu konvertieren Daten, um die Dinge Netzwerk und die Daten zu BytesWie ein Doppel zu einem Hex/Bytes
in müssen zum Senden von Daten zu senden, hin und her über die Dinge, Netzwerk, das Sie brauchen, verwenden Bytes
Einige Funktionen geben einen Schwimmer mit 2 Komma
23,56 oder 4,32
Ich habe große Schwierigkeiten, meine Float zu konvertieren und speichern Sie sie in einem Varaint UUINT8_T meine Daten. Ich habe zu finden, wie mein float Variable
ich eine Schleife wie diese haben zu konvertieren:
/*
NOTE:
uinit8_t mydata[64];
byte nbMaxCapteurs = 10;
mesMesures[i][mesCapteur[i].idDuCapteur].valeur => this is a float
*/
memset(mydata, 0xFF, 64);
uint8_t * ptr = mydata;
for (byte i = 0; i < nbMaxCapteurs; i++) {
if (mesCapteur[i].actif) {
*ptr = mesMesures[i][mesCapteur[i].idDuCapteur].valeur;
ptr += 15; // How to know the number of step to move the pointer
if (i < nbCapteurActif + 1) {
*ptr = 0x2C; // virgule
ptr += sizeof(char);
}
} else {
*ptr = 0x2C; // virgule pour les capteurs inactifs
ptr += sizeof(char);
}
}
*ptr = '00'; // Close \0
ptr += sizeof(char);
printData();
Ich bin sehr neu für solche Umwandlungen. Das eigentliche Problem ist hier:
*ptr = mesMesures[i][mesCapteur[i].idDuCapteur].valeur;
printdata druckt diese:
04 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 2C 18 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 2C CB FF FF FF FF FF FF FF FF FF FF FF FF FF FF 2C A8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 2C
Aber es sollte bei drucken mindestens dies:
34 2E 33 32 FF FF FF FF FF FF FF FF FF FF 2 FF 18 FF FF FF FF FF FF FF FF FF FF FF FF 2C CB FF FF FF FF FF FF FF FF FF FF FF FF FF 2C A8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 2C
Da 34 2e 33 32
ist gleich 4,32.
Ich verstehe nicht und weiß nicht, wie ich einen Float-Wert "zusammenführen" und konvertieren kann. Und könntest du mir helfen, den Zeiger nach der Größe des Schwimmers zu bewegen?
Ich bin wirklich mit diesem Thema fest und ich würde wirklich Ihre Hilfe zu schätzen wissen.
Wie viele verschiedene Werte können Ihrer Meinung nach ein 'uint8_t' darstellen? Wie viele Werte gibt es jeweils für zwei Dezimalstellen vor und nach dem Dezimaltrennzeichen? – EOF
Uint8_t ist nur 8 Bit, also nur 256 mögliche Werte. Ein Double mit 1 Ziffer + 2 Dezimalstellen hat 1000 mögliche Werte, also ist es nicht möglich. – stark
Fragen Sie einfach, wie Sie eine Zahl auf 2 Dezimalstellen runden können? Oder fragst du wirklich, es in ein "uint8_t" zu legen? – ikegami