我想将一个位掩码应用于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'
但为什么呢?任何帮助,将不胜感激! 非常感谢你!
答案 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()
似乎期望一个字符串时,将其重新转换为单字节字符串。