En Python, comment voulez-vous convertir 8-bits des nombres binaires dans leurs caractères ASCII?

Je suis d'essayer d'extraire un message caché dans le bleu de pixels d'une image telle que la si la valeur de bleu est le même, il représente un 0 dans la chaîne binaire, et si la valeur de bleu est impair, il représente un 1 dans la chaîne binaire. La 8-bits de chaînes binaires représentent chacun un personnage, et ensemble, les personnages deviennent un message caché.

J'ai brisé l'ensemble de la chaîne binaire en 8-bit binaire de sous-chaînes, mais comment dois-je aller sur la conversion de ces "morceaux" en caractères ASCII? (chr) et ord() et unichr() ne semblent pas être au travail. Est-il une méthode ou une fonction qui peut être utilisé pour convertir directement la 8-bit binaire de sous-chaîne dans son caractère ASCII correspondant, ou dois-je aller manuellement la conversion de la chaîne?

import Image

def chunks(s, n):
    for start in range(0, len(s), n):
        yield s[start:start+n]

image = Image.open('image.png')
imagePixels = image.load()
imageWidth = image.size[0]
imageHeight = image.size[1]
blueValueEightString = "" 

for y in range(imageHeight):
    for x in range(imageWidth):
        blueValue = imagePixels[x, y][2]

        if blueValue%2 == 0:
            blueValue = 0
        else: 
            blueValue = 1

        blueValueString = str(blueValue)
        blueValueEightString += blueValueString

for chunk in chunks(blueValueEightString, 8):
    print chunk
Vous ne pouvez pas convertir en 8 bits en ASCII: vous ne pouvez convertir 7 bits. ASCII ne pas détenir de 8 bits.

OriginalL'auteur | 2012-03-01