Lecture fichier en binaire et valeur en hexa - Python - Programmation
Marsh Posté le 16-07-2008 à 09:26:44
Lithium57 a écrit : Salut, |
Ca n'a aucun sens. D'un fichier on lit les caractères (enfin les octets, représentés par des caractères), '\x80' est un caractère unique mais comme la console ne peut pas le représenter elle affiche son codepoint brut
Si tu veux les valeurs hexa correspondantes, il faut passer "ord" (pour avoir le code "entier" du caractère) puis "hex" dessus, et ça te renverra un ensemble de chaînes correspondant aux valeurs hexa.
Code :
|
Accessoirement, il est conseillé de ne pas utiliser "from lib import *" quand c'est possible, ça fout le bordel dans le namespace global. Mieux faut faire "import lib" ou "from lib import foo, bar, baz"
Marsh Posté le 17-07-2008 à 01:36:49
Merci, c'est exactement ça que je cherchai.
masklinn a écrit : Ca n'a aucun sens. |
T'es dur!
Je prends note pour l'import de lib.
Marsh Posté le 23-04-2012 à 03:03:50
La question n'était pas de savoir pourquoi la console affiche '\x80' (c'est sans doute parce que le moteur d'affichage à l'écran n'utilise pas un charset lui permettant de traduire '\x80' en un caractère affichable; NB la valeur 80 en hexadécimal est 128 en décimal) mais pourquoi elle affiche 'P' au lieu de '\x50' .
La raison en est que l'unpacking de la chaîne de 7 octets binaryFile.read(7) lue en mode binaire est fait avec le format '7c' : les éléments qui se retrouvent dans le tuple créé par unpack('7c', binaryFile.read(7)) sont des caractères quand les octets unpackés sont ceux de vrais caractères affichables par print, et sont des chaines exprimant les valeurs hexadécimales des octets quand les octets ne sont pas des codes points de caractères affichables.
Ceci étant compris, on n'est pas obligé d'utiliser ord() :
Code :
|
Résultat:
Code :
|
Marsh Posté le 16-07-2008 à 00:52:56
Salut,
j'aimerai lire(en python) un fichier et obtenir les valeurs en hexa. Mais pour certain byte ca donne le caractère ascii.
Dans cette exemple, pour le 3ème byte ça me donne 'P' alors je voudrai '\x50' et le 7ème '\n' au lieu de '\x0a'
La raison est que je veux afficher ces valeurs pour un utilisateur.
J'ai essayé tous les formats pour unpack, c'est toujours le même chose.
Si quelqu'un à une idée. Ça me rend fou.