On 27/05/14 23:10, Alberto José García Fumero wrote:

> Tengo mi matemática bastante oxidada, y no logro razonar cómo se hace
> esto.
>
> Por ejemplo, el número 3232235530 debería ser una  IP del  rango
> 192.168.0.x

Hola Fumero

Valiéndote de:
- La tabla de la verdad del AND (x & y == 1 si y sólo si ambos valen 1)
- El operador de rotación binaria '>>' (corre los bits una cantidad de
posiciones a la derecha e introduce 0's por el otro extremo) 0b1100 >> 1
= 0b0110, 0b0110 >> 1 = 0b0011, 0b0011 >> 1 = 0b0001, etc...

puedes entonces:

In [1]: ip = 3232235530

In [2]: ip >> 24 # 1er octeto, corres 24 a la derecha
Out[2]: 192

In [3]: ip >> 16 & 0xff # 2do octeto, corres 16 a la derecha y te quedas
con el último byte
Out[3]: 168

In [4]: ip >> 8 & 0xff # 3er octeto, corres 8 a la derecha y te quedas
con el último byte
Out[4]: 0

In [5]: ip & 0xff # 4to octeto, te quedas con el último byte
Out[5]: 10

Saludos,
maykel


-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a