Foros del Web » Programación para mayores de 30 ;) » C/C++ »

serializar char*

Estas en el tema de serializar char* en el foro de C/C++ en Foros del Web. Hola estoy trabajando con una libreria para lectores de huella y en una de las funciones me escribe la huella leida en un objeto de ...
  #1 (permalink)  
Antiguo 13/03/2012, 20:02
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 12 años, 1 mes
Puntos: 0
serializar char*

Hola

estoy trabajando con una libreria para lectores de huella y en una de las funciones me escribe la huella leida en un objeto de este tipo:

unsigned char* fprint;

como necesito utilizarlo en python estoy haciendo los wrappers y necesito serializar esa variable
para poder guardarla o manipularla mas adelante, sin embargo todo lo que intento me produce errores de segmentacion, tengo esta funcion:

void pydp_fmd_get_data(char **fmd_data, char* data, int length)
{
*fmd_data = (char *) malloc(length);
memcpy(fmd_data, data, length);
}

length es la dimension de la variable fprint, asi es como me lo devuelve el api.

Espero puedan ayudarme.
  #2 (permalink)  
Antiguo 14/03/2012, 07:10
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: serializar char*

Fiajte que memcpy espera dos punteros... y unos de ellos es un doble puntero.

memcpy(*fmd_data, data, length);
  #3 (permalink)  
Antiguo 14/03/2012, 09:14
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: serializar char*

corregi lo que me comentas pero aun asi obtenia fallos de segmentacion, ya no con memcpy sino con swig, asi que al final cambie algunas cosas y puse un estructura con __attribute__((__packed__))

al final quedo asi:

struct dp_fmd_data {
unsigned char* data;
unsigned int size;
} __attribute__((__packed__));

size_t dp_fmd_get_data(char *data, int length, unsigned char **ret){
struct dp_fmd_data *buf;
size_t buflen;
buflen = sizeof(*buf) + length;
buf = malloc(buflen);
if (!buf)
return 0;

*ret = (unsigned char *) buf;
buf->size = length;
buf->data = data;
return buflen;
}

gracias por la ayuda de todas formas , soy newbie en C y la verdad es que me cuesta trabajar con punteros y cosas de memoria n_n

Etiquetas: serializar, swig
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:52.