gpt4 book ai didi

python - 获取字节串中的特定位值

转载 作者:太空狗 更新时间:2023-10-30 00:20:14 25 4
gpt4 key购买 nike

字节串中特定索引处有一个字节代表八个标志位;字节中每一位一个标志。如果设置了标志,则其对应的位为 1,否则为 0。例如,如果我有

b'\x21'

旗帜是

0001 0101    # Three flags are set at indexes 0, 2 and 4
# and the others are not set

获取该字节中每个位值的最佳方法是什么,以便我知道是否设置了特定标志? (最好使用位运算)

最佳答案

通常,最低有效位是位索引 0,最高有效位是位索引 7。使用这个术语,我们可以确定位索引 k 是否通过将 1 左移的按位与设置由 k.如果按位且非零,则意味着索引 k 有一个 1;否则,索引 k 为 0。所以:

def get_bit(byteval,idx):    return ((byteval&(1<<idx))!=0);

这将正确确定字节索引 0...7 处的位值,从右到左(即最低有效位到最高有效位,或等效地从 1 位置到 2 7 = 128 位)。

为什么有效
我想我应该添加一个解释为什么它有效......

1<<0 是 1 = 0000 0001
1<<1 等于 2 = 0000 0010
1<<2 等于 4 = 0000 0100

如您所见,1< k 并在我们感兴趣的索引处恰好包含一个 1,而不是在其他位置。因此,按位与 1<

关于python - 获取字节串中的特定位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com