《Flask Web開發》中程序的許可權為什麼用十六進位表示?

用二進位我還能理解,但為什麼用十六進位?


這種方法叫做bitmask,它用一個整數的不同二進位位表示不同的含義,在實際使用的時候,每個位都是獨立的,可以把多個位合併起來使用,比如說一個用戶可以既能follow又能comment又能write_articals,就表示為0x1 | 0x2 | 0x4 = 0x7,因為要看整數的二進位位,用十六進位比較方便。


我在實際中會把這裡改掉,因為用戶許可權不可能這麼簡單的分類,我自己是按照路由,菜單,api數據三個方面做許可權。

至於書中的例子,正如靈劍說的那樣。只是為了相對靈活來處理的。


其實是一個東西。。。難道你不會覺得0x08 比1000看起來明了么//=_=

然後這些數字都有2的N次冪。。。二進位形式也就是0001 00010 0100 .,,,,,,的。或運算疊加,取反與運算去除。。;


這本書挺好的。尤其是RBAC這方面給我相當的啟發。採用bitmask是方便,一個資源的CRUD佔一個半字(nibble)。就是面對的資源和角色可能會受限於整數的最大寬度,所以稍微複雜點兒的需要增加更多整數,另外考慮。


你可以把這裡的十六進位當作二進位看,那麼:

許可權1:0x01 = 0001

許可權2:0x02 = 0010

許可權3:0x04 = 0100

許可權4:0x08 = 1000

那麼。如果某個用戶同時有許可權2和4,那麼它的許可權就是1010;如果有許可權123,那麼就是0111;如果都有,就是1111;這樣來進行許可權控制的。用十六進位就是簡單的表達二進位(起碼不用按很多0)


並沒有區別。實際思路是二進位,只是轉換成為 16 進位簡單表示而已。


推薦閱讀:

在python3下怎樣用flask-sqlalchemy對mysql資料庫操作?
微框架 Python Flask 和 Ruby Sinatra,哪個更值得推薦?

TAG:資料庫 | Python | Flask | 十六進位 | FlaskWeb開發書籍 |