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,等等。
1 ^ LSB of 10
1 ^ LSB of 11
0 ^ LSB of 12
This post给出了一些关于将字节转换为位的技巧,但没有给出个别位的异或转换技巧。
发布于 2022-03-05 19:24:03
如果您想用bstr[0]
中对应整数的LSB来异或l
的每一个位,
[((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 ),所以如果上面的解决方案是倒过来的,请尝试
_l = l[::-1]
XORs = [((bstr[0] >> i) & 1) ^ (_l[i] & 1) for i in range(8)][::-1]
https://stackoverflow.com/questions/71365311
复制相似问题