logaritmo libreria descargar built python math

libreria - Python: aritmética bit a bit sin signo de 32 bits



python 3.6 math module (5)

Este es un módulo que creé hace mucho tiempo, y podría ser de ayuda para usted:

IPv4Utils

Proporciona al menos una clase CIDR con aritmética de subred. Verifique los casos de prueba al final del módulo para ver ejemplos.

Al intentar responder a otra publicación cuya solución se refiere a direcciones IP y máscaras de red, me quedé atrapado en la aritmética de bit a bit.

¿Existe una forma estándar, en Python, de llevar a cabo las operaciones Y, O, XOR, NOT a nivel de bits, suponiendo que las entradas son enteros o longitudes "32 bit" (quizás negativas), y que el resultado debe ser largo en el rango [ 0, 2 ** 32]?

En otras palabras, necesito una contraparte de Python que trabaje para las operaciones en bit C entre longitudes sin firmar.

EDITAR: el problema específico es este:

>>> m = 0xFFFFFF00 # netmask 255.255.255.0 >>> ~m -4294967041L # wtf?! I want 255


Puedes enmascarar todo por 0xFFFFFFFF :

>>> m = 0xFFFFFF00 >>> allf = 0xFFFFFFFF >>> ~m & allf 255L


Puedes usar ctypes y su c_uint32 :

>>> import ctypes >>> m = 0xFFFFFF00 >>> ctypes.c_uint32(~m).value 255L

Entonces, lo que hice aquí fue convertir ~m en un entero sin signo C de 32 bits y recuperar su valor en formato Python.


from numpy import uint32


También puede xor con 0xFFFFFFFF, que es equivalente al "complemento sin signo".

>>> 0xFFFFFF00 ^ 0xFFFFFFFF 255