如何在Python中从字符串(str)获取x LSB? 具体来说,我有一个256位字符串,由32个字符组成,每个字符占用1个字节,从中我必须得到一个带有50个最低有效位的“字符”字符串。
答案 0 :(得分:3)
因此,以下是使用字符串(简单但不是最有效的变体)的方法的成分:
ord(x)
产生char的数字(即基本上是比特)(例如ord('A')=65
)。请注意,ord
实际上需要一个字节长的字符(没有特殊符号,如€或类似的......)bin(x)[2:]
创建一个表示二进制数x
的字符串。因此,我们可以做(mystr
保存你的字符串):
l = [bin(ord(x))[2:] for x in mystr] # retrieve every character as binary number
bits = ""
for x in l: # concatenate all bits
bits = bits + l
bits[-50:] # retrieve the last 50 bits
请注意,这种方法肯定不是最有效的方法,因为可以用普通整数运算(使用位移等)替换繁重的字符串操作。然而,这是我想到的最简单的变种。
答案 1 :(得分:1)
我认为这个函数可能有一个可能的答案:
mystr
拥有我的字符串
def get_lsbs_str(mystr):
chrlist = list(mystr)
result1 = [chr(ord(chrlist[-7])&(3))]
result2 = chrlist[-6:]
return "".join(result1 + result2)
此函数占用mystr
的-7rd字符的2个LSB(这些是50个LSB中的2个MSB)
然后取mystr
的最后6个字符(这些是50 LSB的48 LSB)
如果我出错,请告诉我。
答案 2 :(得分:0)