Contruir un struct en Python
Francesc Alted
falted en openlc.org
Jue Ene 15 09:38:05 CET 2004
A Dimecres 14 Gener 2004 19:23, Francisco Javier Nieto va escriure:
> Hola a todos.
>
> Necesito contruir un struct parecido a este en python :
>
> //Codigo C++
> struct common_param {
> unsigned int version:8;
> unsigned int UTID:32;
> unsigned int order_info:16;
> unsigned int packet_type:8;
> unsigned int function_type:8;
> unsigned int checksum:32;
> struct sockaddr_in address;
> };
>
> Al principio pense que el módulo struct era mi salvación, pero pronto me
> di cuenta de que no iba a ser tan fácil. Con él puedo hacer lo siguiente:
>
> cadena = struct.pack('IIc', 150 , 150 , 'a')
>
> Con lo que me creo una ¿cadena?¿estructura? con dos enteros y un caracter.
> El problema viene en que no sé como decirle al pack lo que en C++ se hace
> con la línea:
> unsigned int version:8;
Ups, ni idea de C++, pero parece que la linea anterior significa un entero
sin signo de 8 bits. Si es asi, usa un 'unsigned char' (formato 'B') para
emularlo. Lo siguiente deberia funcionar:
struct.pack('BIHBBIXXX', bla, bla, bla,...)
Donde XXX significa que, para el struct anidado, deberias hacer la misma
operación
Espero que eso te dé una pista,
--
Francesc Alted
Departament de Ciències Experimentals
Universitat Jaume I. Castelló de la Plana. Spain
Más información sobre la lista de distribución Python-es