單個字段標識多個狀態

# -*- coding: utf-8 -*-
"""
二進制狀態標識
"""

# 是否包含狀態
def hasState(states, operateState):
    return (states & operateState) != 0

# 添加狀態
def addState(states, operateState):
    if (hasState(states, operateState)):
        return states;
    return (states | operateState)

# 刪除狀態
def removeState(states, operateState):
    if (not hasState(states, operateState)):
        return states
    return states ^ operateState


FIRST_STATE = 1L << 0  # 0000 0001
SECOND_STATE = 1L << 1  # 0000 0010
THIRD_STATE = 1L << 2  # 0000 0100
FOURTH_STATE = 1L << 3  # 第四個狀態  0000 1000
FIFTH_STATE = 1L << 4  # 第五個狀態   0001 0000
SIXTH_STATE = 1L << 5  # 第六個狀態   0010 0000
SEVENTH_STATE = 1L << 6  # 第七個狀態 0100 0000
EIGHTH_STATE = 1L << 7  # 第八個狀態  1000 0000

s = 0
s = addState(s, FIRST_STATE)
print s
s = addState(s, FIFTH_STATE)
print s
s = addState(s, SEVENTH_STATE)
print s
print hasState(s, FIRST_STATE)
print hasState(s, SECOND_STATE)
print hasState(s, THIRD_STATE)
print hasState(s, FOURTH_STATE)
print hasState(s, FIFTH_STATE)
print hasState(s, SIXTH_STATE)
print hasState(s, SEVENTH_STATE)
print hasState(s, EIGHTH_STATE)
相關文章
相關標籤/搜索