LINUX.ORG.RU

История изменений

Исправление tz4678, (текущая версия) :

Значениями битовых флагов должны быть двойки в степени иначе работать не будет. Там все на двоичное представление завязано. Должны быть 0001, 0010, 0100. Сочетания этих флагов будут давать что-то типа 0101.

In [11]: (2 | 4 | 8) & 8
Out[11]: 8

In [12]: (2 | 4) & 8
Out[12]: 0

...

In [16]: CREATE = 1 << 1

In [17]: READ = 1 << 2

In [18]: UPDATE = 1 << 3

In [19]: DELETE = 1 << 4

In [20]: CREATE
Out[20]: 2

In [21]: DELETE
Out[21]: 16

In [22]: CREATE | READ | UPDATE
Out[22]: 14

In [23]: (CREATE | READ | UPDATE) & DELETE
Out[23]: 0

In [24]: (CREATE | READ | UPDATE) & UPDATE
Out[24]: 8

Исходная версия tz4678, :

Битовые флаги должны двойки в степени иначе работать не будет. Там все на двоичное представление завязано. Должны быть 0001, 0010, 0100. Сочетания этих флагов будут давать что-то типа 0101.

In [11]: (2 | 4 | 8) & 8
Out[11]: 8

In [12]: (2 | 4) & 8
Out[12]: 0

...

In [16]: CREATE = 1 << 1

In [17]: READ = 1 << 2

In [18]: UPDATE = 1 << 3

In [19]: DELETE = 1 << 4

In [20]: CREATE
Out[20]: 2

In [21]: DELETE
Out[21]: 16

In [22]: CREATE | READ | UPDATE
Out[22]: 14

In [23]: (CREATE | READ | UPDATE) & DELETE
Out[23]: 0

In [24]: (CREATE | READ | UPDATE) & UPDATE
Out[24]: 8