Skip to content

Serialize (Serializar) y Deserialize (Deserializar)

Son procesos de almacenamiento y recuperación de datos en formato binario o textual, dependiendo del método utilizado.

La serialización es el proceso de convertir un objeto o estructura de datos en una representación binaria o textual que puede ser almacenada en un archivo, enviada por red o guardada en una base de datos. La idea detrás de la serialización es convertir los datos del objeto en una forma más compacta y fácil de transportar.

El proceso de deserializar se refiere a la conversión inversa, donde un archivo binario o textual se lee y se convierte de nuevo en un objeto o estructura de datos en memoria. Esto permite recuperar los datos del archivo original y volverlos accesibles para ser utilizados por el programa.

Estos son conceptos fundamentales en programación, especialmente cuando trabajas con comunicación de red, almacenamiento persistente de datos o cualquier situación donde necesitas convertir estructuras de datos en formatos que puedan ser gestionados de manera más fácil.

uintptr_t es un tipo de datos entero definido en la biblioteca <cstdint> de C++. Representa un entero sin signo lo suficientemente grande como para contener la representación de un puntero. Este tipo de datos es especialmente útil cuando trabajas con operaciones que involucran punteros y necesitas representar la dirección de memoria de manera integral.

  1. Tamaño Suficiente: Es lo suficientemente grande para contener la representación de cualquier puntero.

  2. Entero Sin Signo: Es un entero sin signo, lo que significa que solo representa números no negativos.

  3. Portabilidad: Al utilizar uintptr_t, tu código puede ser más portátil entre diferentes plataformas, ya que garantiza un tamaño específico para representar direcciones de memoria.

cpp
#include <iostream>

int main() {
    int myInt = 42;
    uintptr_t ptrValue = reinterpret_cast<uintptr_t>(&myInt);

    std::cout << "Dirección de memoria de myInt: " << ptrValue << std::endl;

    // También puedes convertirlo de nuevo a un puntero
    int* ptrToInt = reinterpret_cast<int*>(ptrValue);

    std::cout << "Valor a través del puntero: " << *ptrToInt << std::endl;

    return 0;
}
output
bash
Dirección de memoria de myInt: 140732662298664
Valor a través del puntero: 42