error: invalid static_cast from type ‘unsigned char*’ to type ‘uint32_t* {aka unsigned int*}’
uint32_t *starti = static_cast<uint32_t*>(&memory[164]);
Ich habe ein Array von Zeichen zugewiesen, und ich möchte 4 Bytes als 32bit int lesen, aber ich bekomme einen Compilerfehler. Ich weiß, dass ich etwas verändern kann, wie folgt aus:Kann ich ein unsigned char * in einen unsigned int * umwandeln?
(start[0] << 24) + (start[1] << 16) + (start[2] << 8) + start[3];
Und es wird das gleiche tun, aber das ist eine Menge zusätzlicher Arbeit.
Ist es möglich, diese vier Bytes einfach als Int zu interpretieren?
Yup. 'uint32_t val = * (uint32_t *) ((void *) (Speicher + 164));' – IdeaHat
Schauen Sie hier: http://stackoverflow.com/questions/2473628/c-cant-static-cast-from- double-to-int? rq = 1 – Marius
Es sollte angemerkt werden, dass dies nicht sehr 'C++' -y ist. Wenn zum Beispiel "Speicher" aus einer Datei oder aus dem Netzwerk stammt, müssen Sie sich Gedanken über Endianess machen. –