2010-05-26 4 views
1

En utilisant python 2.6.5 sous Windows XP, il semble que je reçois le mauvais résultat lorsque vous utilisez le code suivant:Ne pas obtenir le résultat correct de retour de inet_aton/struct.unpack

import struct 
import socket 
struct.unpack('L', socket.inet_aton('192.168.1.1'))[0] 

Ce retour en 16885952 à ma connaissance, il devrait retourner 3232235777. Est-ce que je fais quelque chose de mal ici? Comment puis-je réparer ça?

Répondre

8

Vous devez spécifier l'endianess. En interprétant le nombre comme petit-boutiste, cependant inet_aton renvoie le nombre comme big-endian.

struct.unpack('>L', socket.inet_aton('192.168.1.1'))[0] 

Cela devrait fonctionner correctement et renvoyer le nombre attendu.

Voir la documentation python sur "struct" pour référence.

Questions connexes