La conversión entre char* y unsigned no se ha realizado correctamente durante mucho tiempo y la última conversión de tipo obligatoria se ha realizado correctamente.
char *elemento = new char[4];
unsigned* ret =(unsigned*)tem;//Necesita ser convertido de esta manera, unsigned ret = unsigned(*tem) en realidad está mal, no sé quién me puede dar una respuesta
Además, en c, hay una diferencia entre cadenas y matrices de caracteres, consulte http://c.biancheng.net/view/337.html
Adjunta un poco de experiencia:
template<clase T>
void put_val(std::string& buf, T val) { buf.append((caracter sin firmar*)&val, (caracter sin firmar*)&val + sizeof(T)); }
estándar::cadena b3dm_buf;
b3dm_buf += "b3dm";
cout << "b3dm_buf longitud:"<<b3dm_buf.longitud() << endl;
versión int = 1;
put_val(b3dm_buf, versión);
Los dos parámetros de la función append() anterior son la primera y la última dirección de char* sin firmar, put_val primero convierte el tipo T en char* sin firmar y luego agrega los caracteres a buf.
---------------------
Autor: Ignorante juvenil 123
Fuente: CSDN Original
: https://blog.csdn.net/sinat_34816302/article/details/84544345Descargo