[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