1

我想对 python 中的变量应用位掩码以找出设置了哪些位。我一直在尝试,但还没有找到正确的方法。我的变量是二进制的,为了显示它的值,我使用了函数 hexlify():

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

不,我无法将位掩码应用于 corr:

    print hexlify(corr&0x01)

它说

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

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

4

3 回答 3

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
于 2012-10-30T17:46:14.697 回答
0

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

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

这会将 corr 转换为十六进制字符串,该字符串在应用掩码之前再次转换为整数,基数为 16 ..... 任何有关我如何解决此问题的提示,否则将不胜感激。谢谢!

于 2012-10-30T18:24:40.330 回答
0

由于corr来自

corr = fh.read(1)

我想您想读取一个字节,然后继续读取该字节的值。

然后你应该使用ord()and chr()

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

ord()为您获取该字节的字节值,您可以对其进行处理,然后,如hexlify()预期的那样,将其重新转换为单字节字符串。

于 2012-10-30T19:04:12.453 回答