2009-03-27 6 views
5

Toutes mes excuses pour la question noob Python, mais je suis coincé là-dessus depuis beaucoup trop longtemps.Gestion de sortie de la prise python recv

J'utilise des prises de python pour recevoir des données à partir d'un serveur. Je fais ceci:


data = self.socket.recv(4) 
print "data is ", data 
print "repr(data) is ", repr(data) 

La sortie sur la console est la suivante:

données

est
rééd (données) est '\ x00 \ x00 \ x00 \ x01'

Je veux transformer cette chaîne contenant essentiellement un nombre de 4 octets en un int - ou en fait ce qui serait long en C. Comment puis-je transformer cet objet de données en une valeur numérique que je peux facilement gérer?

Répondre

10

Vous voulez probablement utiliser struct.

Le code ressemblerait à quelque chose comme:

import struct 

data = self.socket.recv(4) 
print "data is ", data 
print "repr(data) is ", repr(data) 
myint = struct.unpack("!i", data)[0] 
+0

Merci. En fait, je devais faire "myint = unpack ("! I ", data) [0]" car c'est un big-endian et ça sort comme un tuple. Si vous voulez éditer je marquerai votre réponse correcte. Encore une fois, merci pour l'aide. – chrism1

+0

Vous avez manqué la partie du tuple. :) Edited la réponse par votre demande. – grieve

+0

Juste pour être pédant, je crois que la dernière ligne devrait aussi être: myint = struct.unpack ("! I", data) [0] –

Questions connexes