在python中应用一个掩码

时间:2012-10-30 17:43:37

标签: python binary bitmask

我想将一个位掩码应用于python中的变量,以确定设置了哪些位。我一直在尝试,但还没有找到正确的方法来做到这一点。我的变量是二进制的并且要显示它的值,我使用函数hexlify():

    corr = fh.read(1)
    mac = fh.read(6)[-3:]
    print "corr "+ hexlify(corr)

没有麻烦将bitmask应用到corr:

    print hexlify(corr&0x01)

它说

TypeError: unsupported operand type(s) for &: 'str' and 'int'

但为什么呢?任何帮助,将不胜感激! 非常感谢你!

3 个答案:

答案 0 :(得分:1)

因为corr是一个字符串,它需要一个int

print hexlify(int(corr)&0x01) # if corr is like "12352"
print hexlify(ord(corr)&0x01) #if corr is like "\x##"

>>> ord("\x10")
16
>>> ord("\x10")&0x01
0

答案 1 :(得分:0)

现在,我不喜欢这个,但似乎有效:

print (int(hexlify(corr),16))&0x01

这将corr转换为十六进制字符串,再次将转换后的baclk转换为整数,在应用掩码之前使用16进行处理.....任何有关如何解决此问题的提示都将受到赞赏。 谢谢!

答案 2 :(得分:0)

由于corr来自

corr = fh.read(1)

我想你想要读取一个字节,然后继续使用该字节的值。

然后您应该使用ord()chr()

if corr: # it could as well be empty!
    print "corr "+ hexlify(chr(ord(corr) & 0x01))

ord()获取此字节的字节值,您可以处理该字节值,然后,当hexlify()似乎期望一个字符串时,将其重新转换为单字节字符串。