首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按位AND和字符串变量

按位AND和字符串变量
EN

Stack Overflow用户
提问于 2016-04-16 11:57:14
回答 2查看 57关注 0票数 0

我正在从处理器中提取字节宽的数据,并尝试提取一个位/标志来表示状态。我从0x1B中提取数据字节,然后对应该离开第4位的0x08进行掩码。在正常操作中,位翻转需要一些时间-所以我反复拉出位并测试它

代码语言:javascript
复制
STATUS_FOC = []
STATUS = []
FOC_Mask = []
while x <= 100:
     STATUS = bin(sys.Read(0x1B))
     print 'status', STATUS
     FOC_Mask = bin(0x08)
     print 'FOC', FOC_Mask

     STATUS_FOC = STATUS & FOC_Mask

不管我对变量做了什么,Python在最后一行坚持要对两个字符串进行逻辑AND操作。STATUS和FOC_Mask的输出如下:

状态0b11010000 FOC 0b1000

我把它读成二进制文件,但是程序在最后一行崩溃了,说它不能对字符串进行'&‘操作。帮助

EN

回答 2

Stack Overflow用户

发布于 2016-04-16 12:11:52

函数的作用是:返回一个字符串。您不需要在代码中使用它。只需执行以下操作:

代码语言:javascript
复制
STATUS_FOC = []
STATUS = []
FOC_Mask = []
# x = 0
while x <= 100:
     STATUS = sys.Read(0x1B)
     print 'status', STATUS
     FOC_Mask = 0x08
     print 'FOC', FOC_Mask
     STATUS_FOC = STATUS & FOC_Mask
     # x += 1

这应该可以工作,我没有办法用你的系统来测试它。我还添加了一个提示来递增x,否则Python将在while条件下给出一个错误,或者如果在其他地方定义了x,那么您的循环将永远持续下去,除非这是您想要的。

票数 2
EN

Stack Overflow用户

发布于 2016-04-16 12:17:03

bin为您提供了一个二进制数的sting表示。为了使用&位运算符,这两个值都是ints

代码语言:javascript
复制
In [10]: status = bin(0x1B)

In [11]: print 'status', status
status 0b11011

In [12]: mask = bin(0x08)

In [13]: print 'foc ', mask
foc  0b1000

In [14]: status_foc = int(status, 2) & int(mask, 2)

In [15]: print 'status_foc', status_foc
status_foc 8

In [16]: status_foc = bin(status_foc)

In [17]: print 'status_foc', status_foc
status_foc 0b1000

int('string', 2)中的第二个参数使其以2为基数,即二进制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36659938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档