从Python中的字符串中获取x个最低有效位

时间:2012-03-28 07:36:41

标签: python string character-encoding

如何在Python中从字符串(str)获取x LSB? 具体来说,我有一个256位字符串,由32个字符组成,每个字符占用1个字节,从中我必须得到一个带有50个最低有效位的“字符”字符串。

3 个答案:

答案 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)

如果只是为了展示,那对你有帮助吗?

  yourString [14:63]

您也可以使用

  yourString [-50:]

有关详细信息,请参阅here