我看过一些使用位运算来创建选项/标志的代码。
例如,考虑来自ssl库的以下示例:
# bitwise AND and NOT
ctx = ssl.create_default_context(Purpose.CLIENT_AUTH)
ctx.options &= ~ssl.OP_NO_SSLv3
# bitwise OR
client_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
client_context.options |= ssl.OP_NO_TLSv1
client_context.options |= ssl.OP_NO_TLSv1_1
这些标志的数值:
>>> ssl.OP_NO_SSLv3.value
33554432
>>> ssl.OP_NO_TLSv1.value
67108864
>>> ssl.OP_NO_TLSv1_1.value
268435456
我不理解创建旗帜的这种系统如何运作,也不知道那些数字是怎么选择的。我研究了操作符的工作原理,但仍然感到困惑。
请问有人能够解释一下这个系统是如何运作的,并且适用的使用场景是什么吗?