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