【发布时间】:2022-04-09 04:58:47
【问题描述】:
我正在查看一些格式规范,并且遇到以下情况:
如果(标志和 1){ ... }
现在,根据相同的文档旗帜是:
所以标志是3个字节。操作旗帜 & 1我想在标志和..之间进行按位运算? 1 以 24 位长的方式表示?有人可以再解释一下吗?谢谢!
标签: byte bitwise-operators bit flags bitwise-and
我正在查看一些格式规范,并且遇到以下情况:
如果(标志和 1){ ... }
现在,根据相同的文档旗帜是:
所以标志是3个字节。操作旗帜 & 1我想在标志和..之间进行按位运算? 1 以 24 位长的方式表示?有人可以再解释一下吗?谢谢!
标签: byte bitwise-operators bit flags bitwise-and
规范应该列出可用的标志,然后您可以使用各个位来打开/关闭它们。
例如 Python ssl 模块有多个 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
我想这在你的情况下也有类似的目的。
【讨论】: