Long long to char

Iniciado por Xedrox, 4 Agosto 2013, 23:26 PM

0 Miembros y 1 Visitante están viendo este tema.

Xedrox

Buenas gente, les hago una consulta, tengo una clase con la siguiente estructura:


class Dummy
{
    public:
         char mensaje[4];
         long long valor;
         char mensaje2[4];

...



Las variables de ese objeto las tengo instanciadas de la siguiente manera:


mensaje: "hola"
valor:  0
mensaje2: "hola"


Cabe aclarar que los array de char no se le carga caracter nulo.

Lo que tengo que hacer es convertir este objeto en un "char*" que despues se lo paso por parametro a una clase (la cual no tengo visible el codigo) para que luego lo grabe en un archivo. Se que parece raro pero tengo que usar esa clase por limitacion de la plataforma. Prosigo, el main me queda asi:


Dummy obj;
instancarVariablesObjetos(obj);
int longObj=sizeof(Dummy); //Da 4 + 8 + 4 bytes=16, ok  
char *buffer=(char*) malloc(longObj);
memcpy(buffer,&obj,longObj);
grabarEnArchivo(buffer);


Lo que esperaba es que grabe esto, considerar que long long tiene 0 setado como valor, osea todos nulos en bytes:


hola[NULL][NULL][NULL][NULL][NULL][NULL][NULL][NULL]hola


Pero me quedo asi:


hola[NULL][NULL][NULL][NULL][NULL][NULL][NULL][NULL][NULL][NULL]hola


Vease que hay dos nulos de mas, tienen idea porque puede ser?

Muchas gracias
Saludos!



x64core

Luce como que es el alineamiento, que compilador utilizas?

Xedrox

Hola, uso c99.

Saludos!

P.D. Acabo de encontrar la forma de solucinar el problema, queria evitarlo pero estoy cargando el array byte por byte, por lo menos zafo con esta solucion.

amchacon

Sobrecarga el operador de conversión:

Código (cpp) [Seleccionar]
class Dummy
{
    public:
         char mensaje[4];
         long long valor;
         char mensaje2[4];

         operator char*()
        {
            char Texto[8];

            for (short i = 0; i < 4;i++)
            {
                 Texto[i] = mensaje[i];
                 Texto[i+4] = mensaje2[i];
            }
           
            return Texto;
        }

//...
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar