es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)

Tags:  ,

Answer

  1. Avatar for 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 un char* 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.

Comments are closed.