楽しみのために、テキスト全体をビットごとに右に回転させようとしています。つまり、すべての文字の最後のビット (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])
しかし、うまくいきません。私はすべてゼロを取得しています。どうすればこれを改善できるか、またはここで何が間違っているのでしょうか?