Python: 32-битная арифметика без знака

Он также изменяет то, что pydoc покажет:

module1.py

a = "A"
b = "B"
c = "C"

module2.py

__all__ = ['a', 'b']

a = "A"
b = "B"
c = "C"

$ pydoc module1

Help on module module1:

NAME
    module1

FILE
    module1.py

DATA
    a = 'A'
    b = 'B'
    c = 'C'

$ pydoc module2

Help on module module2:

NAME
    module2

FILE
    module2.py

DATA
    __all__ = ['a', 'b']
    a = 'A'
    b = 'B'

Я объявляю __all__ во всех моих модулях, а также подчеркивая внутренние детали, это действительно помогает при использовании вещей, которые вы никогда раньше не использовали живые интерпретаторы.

29
задан Federico A. Ramponi 17 October 2008 в 02:23
поделиться

5 ответов

Вы можете маскировать все по 0xFFFFFFFF:

>>> m = 0xFFFFFF00
>>> allf = 0xFFFFFFFF
>>> ~m & allf
255L
39
ответ дан John Millikin 17 October 2008 в 02:23
поделиться
from numpy import uint32
10
ответ дан pixelbeat 17 October 2008 в 02:23
поделиться

Это модуль, который я создал очень давно, и он может быть вам полезен:

IPv4Utils

Он обеспечивает по крайней мере CIDR класс с арифметикой подсетей. Проверьте контрольные примеры в конце модуля для примеров.

1
ответ дан tzot 17 October 2008 в 02:23
поделиться

Вы также можете сделать xor с 0xFFFFFFFF, что эквивалентно «беззнаковому дополнению».

>>> 0xFFFFFF00 ^ 0xFFFFFFFF
255
0
ответ дан Maarten 17 October 2008 в 02:23
поделиться

Вы можете использовать ctypes и его c_uint32:

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

Итак, я сделал приведение ~m к 32-битному целому числу без знака и получение его значения обратно в формате Python.

51
ответ дан DzinX 17 October 2008 в 02:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: