Obtener la representación en bytes de una clase C++
Tengo objetos que necesito hashear con SHA256. El objeto tiene varios campos de la siguiente manera:
class Foo {
// algunos métodos
protected:
std::array<32,int> x;
char y[32];
long z;
}
¿Hay alguna forma de acceder directamente a los bytes que representan las 3 variables miembro en la memoria como si fuera una estructura? Estos hashes deben calcularse lo más rápidamente posible, por lo que quiero evitar mallocar un nuevo conjunto de bytes y copiarlos a un array asignado en el montón. ¿O la respuesta es simplemente incrustar una estructura dentro de la clase?
Es fundamental obtener la representación binaria exacta de estas variables para que el SHA256 salga exactamente igual dado que las 3 variables son iguales (por lo que no puedo tener ningún byte de relleno extra incluido en la función hash)
davy.ai
Sí, puede acceder directamente a los bytes que representan las 3 variables miembro en memoria como lo haría con una estructura. Puede usar el operador
reinterpret_cast
para convertir el objeto a unchar*
y luego acceder a los bytes de las 3 variables miembro. Esto asegurará que obtenga la representación binaria exacta de las variables.También puede usar la función
memcpy
para copiar los bytes de las 3 variables miembro en un array asignado en el heap. Esto también asegurará que obtenga la representación binaria exacta de las variables.