小编xsl*_*lsx的帖子

标志的按位运算?

我见过一些使用按位运算来创建选项/标志的代码。

例如,请考虑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
Run Code Online (Sandbox Code Playgroud)

这些标志的数值:

>>> ssl.OP_NO_SSLv3.value
33554432
>>> ssl.OP_NO_TLSv1.value
67108864
>>> ssl.OP_NO_TLSv1_1.value
268435456
Run Code Online (Sandbox Code Playgroud)

我不明白这种创建标志的系统是如何工作的,或者这些数字是如何选择的。我已经研究了操作符的工作方式,但我仍然感到困惑。

有人可以解释一下这是如何工作的,以及适当的用例吗?

python flags bit-manipulation

3
推荐指数
1
解决办法
78
查看次数

标签 统计

bit-manipulation ×1

flags ×1

python ×1