位标志操作
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
我猜这对你的情况有类似的目的。
我正在查看一些格式规范,遇到以下情况:
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
我猜这对你的情况有类似的目的。