《Flask Web開發》中程序的許可權為什麼用十六進位表示?
01-03
用二進位我還能理解,但為什麼用十六進位?
這種方法叫做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開發書籍 |