[Python-es] Equivalente en python de algo en C,, read()
Ricardo Cárdenes Medina
ricardo.cardenes en gmail.com
Mar Ago 24 00:43:30 CEST 2010
2010/8/23 Horacio <horacio9573 en gmail.com>:
> Ya lo he probado y me da una serie de chirimbolos ... desupés de los
> datos, a ver me saca cosas como esta...
>
> $python cliente6.py
> Escuche: -2090377388 d d� @;{�X8{�̃
> �d��� � }�.N=�((}�P�鿿�{�@�鿀�4����'}�@;{� X&}� hA{�@���4�������p&}�̃`{�����N�j�)�u�
>
> El dato útil es -2090377388 pues hago un "atoi()" del envío que es un char[256]
Para convertir datos, usa las funciones del módulo "struct". En
concreto, para tu caso concreto, struct.unpak. Para convertir un
entero de 32 bits sería:
struct.unpack("i", datos) # lee 32 bits y devuelve un entero con signo
Ojo: datos, en este caso, debería ser una cadena de 4 caracteres (a 8
bits cada uno: 32 bits en total). Las funciones de struct se quejan si
les pasas menos datos de los especificados en el formato, pero también
si les pasas más.
Ojo^2: puede ser que tengas que aplicar un modificador para cambiar el
orden de los bytes.
En resumen: lee la documentación del módulo :)
Más información sobre la lista de distribución Python-es