[Python-es] Classe para tratamiento de bits
Xin
xinxic en gmail.com
Mar Ago 28 16:25:39 CEST 2007
Gràcias, le hecharé una ojeada, sobre todo en la comprovación de tipos.
Lo de guardar la cadena no me convence, pués normalmente trabajaré con
ficheros y usaré notación hexagessimal.
stream = '0x' + ''.join(["%02X" % byte for byte in
file('fichero.bin','rb')])
b = Bits(stream,base=16)
Xin
El 28/08/2007, a les 15:59, en/na Chema Cortes va escriure:
> El 2007/8/28, Xin <xinxic en gmail.com> escribió:
>
>> Hace poco tube la necesidad de trabajar con streams de bits de
>> diferentes tamaños y poder extraer diferentes valors de estos. Como no
>> he encontrado ningun tipo de mòdulo o classe me la he hecho yo mismo.
>>
>> La idea és poder trabajar con ello como si de un número de tratara.
>> Así
>> que su funcionamiento és el siguiente:
>>
>> Quizàs faltaria alguna funcion más, però para mi ya tenia suficiente.
>> Y también seria mejor que no guardara todos los sub-valores.
>> Espero que os sirva. Este és el codigo.
>
> Creo que está perfecto. Lo único que haría yo sería guardar la cadena
> con los bits en lugar de los subvalores. Así mismo, me apoyaría en el
> rebanado (slice) que tienen las cadenas para implementar el
> __getitem__. En otro orden de cosas, para chequear tipos es más
> conveniente hacerlo con la función isinstance(<objeto>,<tipo>) para
> evitarse sorpresas (por ejemplo, tu programa falla si usaras una
> instancia Bits() como índice en el __getitem__).
>
> class Bits(long):
> ...
> def __init__(self,value,start=None,end=None,base=10):
> self.value=value
> self.base=base
> ...
>
> def __getitem__(self,key):
> return Bits(self.value[key],base=self.base)
>
> Faltan las comprobaciones que tenías.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
Más información sobre la lista de distribución Python-es