检查Python 3中是否设置了特定位

时间:2013-12-17 14:15:28

标签: python-3.x bit-manipulation bit

我有两个字节:

b'T' 

b'\x40'     (only bit #6 is set)

需要检查第一个字节以查看是否设置了#6位。例如,在[A-Za-9]上会设置它,但在所有一些字符上都不会被设置。

if (b'T' & b'\x40') != 0:
    print("set");

不起作用......

2 个答案:

答案 0 :(得分:2)

索引时的字节值给出整数值。使用它对您有利:

value = b'T'
if value[0] & 0x40:
    print('set')

你不能在字节上使用&运算符,但它对整数有效。

请注意,非零数字在布尔上下文中始终测试为true,此处无需显式测试!= 0

答案 1 :(得分:0)

您正在寻找ord内置函数,它将单字符字符串(字节或unicode)转换为相应的数字代码点。

if ord(b'T') & 0x40:
   print("set")