Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按位旋转整个文本_Python_Bit Manipulation - Fatal编程技术网

Python 按位旋转整个文本

Python 按位旋转整个文本,python,bit-manipulation,Python,Bit Manipulation,为了好玩,我尝试将整个文本按位向右旋转。也就是说,我希望每个字符的最后一位(lsb)最终成为下一个字符的第一位(msb),最后一个字符的最后一位成为第一个字符的第一位。这是我尝试过的 def bitwise_text_rotate(text): # make a list of ascii codes characters = [ord(a) for a in text] # save last character's right-most bit carry_

为了好玩,我尝试将整个文本按位向右旋转。也就是说,我希望每个字符的最后一位(lsb)最终成为下一个字符的第一位(msb),最后一个字符的最后一位成为第一个字符的第一位。这是我尝试过的

def bitwise_text_rotate(text):
    # make a list of ascii codes
    characters = [ord(a) for a in text]

    # save last character's right-most bit
    carry_bit = characters[-1] & 1

    # list of processed characters
    output = []

    for char in characters:
        print "processing", char
        last_bit = char & 1
        char = char >> 1
        mask = (carry_bit << 8) & 1
        char = char & mask
        print "appending", char
        output.append(char)
        carry_bit = last_bit

    return "".join([chr(a) for a in output])
def按位文本旋转(文本):
#列出ascii码
字符=[ord(a)表示文本中的a]
#保存最后一个字符的最右边位
进位=字符[-1]&1
#已处理字符列表
输出=[]
对于字符中的字符:
打印“处理”,字符
最后一位=字符和1
char=char>>1
掩码=(进位尝试以下方法:

s = map(ord, text)
return ''.join(chr(((a&1)<<7) + (b>>1)) for a,b in zip(s[-1:] + s, s))
s=map(作战需求文件,文本)
返回“”。在zip(s[-1:]+s,s)中为a,b加入(chr(((a&1)1))

这些行不正确:

mask = (carry_bit << 8) & 1
char = char & mask

mask=(如果这样做,它将不再是有效的ASCII。@MarkByers没问题。我只是想知道如何实现这一点。另外,如果我能做到这一点,我也可以做左旋转,并拥有一个小小的加密算法:)这不是真正的加密:它是一对一的,所以任何人都可以在没有密钥的情况下反转它。很好。我花了一段时间才得到它。仅仅更改那一行并没有改变结果。我仍然得到所有的零。对不起,不是在一个comp前面…下一行也是错误的。修改答案。好的,我还意识到我应该换7,而不是8。你可以d也把它加到你的答案中,使它完整。
mask = carry_bit << 7
char = char | mask