在python中应用位掩码

2024-09-27 23:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对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'

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


Tags: 方法函数readmactype二进制print掩码
3条回答

因为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

现在,我不喜欢这个,但它似乎起作用了:

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

这将corr转换为十六进制字符串,该字符串再次将baclk转换为整数,在应用掩码之前以16为基数。。。。。如果您能给我一些提示,我将不胜感激。 谢谢!

因为corr来自

corr = fh.read(1)

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

那么您应该使用ord()chr()

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

ord()获取此字节的字节值,您可以对其进行处理,然后,由于hexlify()似乎需要一个字符串,将其重新转换为一个单字节字符串。

相关问题 更多 >

    热门问题