Comment puis-je déballe binaire hex données formatées en Python?
En utilisant le PHP pack() fonction, j'ai converti une chaîne de caractères dans un fichier binaire représentation hexadécimale:
$string = md5(time); //32 character length
$packed = pack('H*', $string);
H* le formatage signifie "chaîne Hexadécimale, haute grignoter première".
Pour décompresser ce en PHP, je voudrais simplement utiliser le unpack() fonction avec le H* indicateur de format.
Comment décompresser ces données en Python?
- vous avez votre terminologie horriblement confus.
- Autre que "binaire hex", tout est OK. Il y a juste un peu de vocabulaire de la langue différence. Il me confond, à première jusqu'j'ai lu la définition de PHP pack(), mais c'est juste une question de différents termes utilisés.
Vous devez vous connecter pour publier un commentaire.
Il y a un moyen facile de faire cela avec la
binascii
module:Si je ne suis malentendu quelque chose sur le grignotement de la commande (haute-grignoter première est la valeur par défaut), qui doit être parfaitement suffisant!
En outre, Python
hashlib.md5
les objets ont unehexdigest()
méthode pour convertir automatiquement la somme MD5 d'un fichier ASCII hex chaîne, de sorte que cette méthode n'est même pas nécessaire pour condensés MD5. Espérons que cela aide.Il n'y a pas de "hex grignoter" code de struct.pack, de sorte que vous devrez manuellement pack en octets d'abord, comme:
Ou mieux, vous pouvez simplement utiliser le sortilège de codec. ie.
Pour décompresser, vous pouvez encoder le résultat de retour à l'hex de même
Cependant, noter que, pour votre exemple, il n'y a probablement pas besoin de prendre le rond-voyage à travers un hex de représentation lors de l'encodage. Suffit d'utiliser le md5 binaire digérer directement. ie.
C'est l'équivalent de votre pack()ed représentation. Pour obtenir la représentation hexadécimale, utilisez la même méthode de décompression ci-dessus:
[Edit]: mise à Jour pour une meilleure utilisation de la méthode (hex codec)
En Python que vous utilisez le struct module pour cela.
HTH