位标志操作

Bit flags operation

我正在查看一些格式规范,遇到以下情况:

if (flags & 1) {
 ... }

现在,根据相同的文档 flags 是:

所以标志是 3 个字节。我想 flags & 1 操作是在标志和 .. 之间进行按位运算? 1以24位长的方式表示?有人可以向我解释更多吗?谢谢!

规范应该列出可用的标志,然后您可以使用各个位来切换它们 on/off。

例如 Python ssl module has multiple constants 我们可以用来改变一些选项(标志)。

让我们看看是否启用了 TLS 版本 1.0 选项:

>>> import ssl
>>> ctx = ssl.create_default_context()
>>> bin(ctx.options)
'0b10000010010100100000000001010100'
>>> int(ssl.PROTOCOL_TLSv1)
3
>>> bin(ssl.PROTOCOL_TLSv1)
'0b11'
>>> bool(ctx.options & ssl.PROTOCOL_TLSv1)
False

我们可以看到前两位(十进制为 3)未设置,因此未启用此选项,所以让我们启用它:

>>> ctx.options |= ssl.PROTOCOL_TLSv1
>>> bin(ctx.options)
'0b10000010010100100000000001010111'
>>> bool(ctx.options & ssl.PROTOCOL_TLSv1)
True

我猜这对你的情况有类似的目的。