uint8_t stamp[4] ;
stamp
ist hier deklariert als ein Pointer auf einen uint8_t
-Wert.
* stamp = time(NULL);
Diese Zeile erzeugt links einen uint8_t
-Wert und weist diesem eine größere Zahl zu. Was davon nicht in 8 Bit passt, wird abgeschnitten.
cout << "stamp: " << (unsigned long)&stamp << ends;
Diese Zeile gibt nicht den Wert von stamp
aus, sondern die Adresse an der der Pointer stamp
gespeichert ist.
Korrekt wäre:
uint8_t stamp[4];
*(unsigned long*)stamp = time(NULL);
cout << "stamp: " << *(unsigned long*)stamp << endl;
Oder ganz einfach:
time_t stamp = time(NULL);
cout << "stamp: " << stamp << endl;