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
OriginalL'auteur | 2012-03-01
Vous devez vous connecter pour publier un commentaire.
Vous devez d'abord le convertir en un entier, et puis vous pouvez utiliser
chr()
pour obtenir le caractère ascii correspondant à la valeur:imagePixels
en nombres allant de 0 à 255 directement, plutôt que la création de chaînes, se réunissant et de le convertir en un nombre.J'ai vu l'utilisation de
int
avec une base de2
dans plusieurs exemples maintenant. Pourquoi est-il judicieux d'utiliser une base de 2?OriginalL'auteur stranac