首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有数字列表的二进制字符串的位

具有数字列表的二进制字符串的位
EN

Stack Overflow用户
提问于 2022-03-05 19:20:21
回答 1查看 60关注 0票数 0
代码语言:javascript
运行
复制
 l = [10,11,12,13,14,15,16,17]
 bstr = b'fedora'
 to_xor = bstr[0]  

我将如何高效地将8位to_xor与列表中的8个值进行异或?

即to_xor的二进制值'f',为102:1100110

我想异或第一位的'f‘与LSB的10,第二位与LSB的11,第三位与LSB的12,等等。

代码语言:javascript
运行
复制
1 ^ LSB of 10
1 ^ LSB of 11
0 ^ LSB of 12

This post给出了一些关于将字节转换为位的技巧,但没有给出个别位的异或转换技巧。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-05 19:24:03

如果您想用bstr[0]中对应整数的LSB来异或l的每一个位,

代码语言:javascript
运行
复制
[((bstr[0] >> i) & 1) ^ (l[i] & 1) for i in range(8)]

(bstr[0] >> i) & 1)提取bstr[0]i第四位,(l[i] & 1)提取整数l[i]的LSB,我们知道字节中有8位,因此range(8)

您想要的似乎是与此相反的( l XOR中的第一个整数,bstr[0]中的MSB ),所以如果上面的解决方案是倒过来的,请尝试

代码语言:javascript
运行
复制
_l = l[::-1]
XORs = [((bstr[0] >> i) & 1) ^ (_l[i] & 1) for i in range(8)][::-1]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71365311

复制
相关文章

相似问题

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