2009-03-27 19 views
5

नोब पायथन प्रश्न के लिए माफ़ी, लेकिन मैं इस पर बहुत लंबे समय तक फंस गया हूं।पायथन सॉकेट आरईवी

मैं सर्वर से कुछ डेटा प्राप्त करने के लिए पाइथन सॉकेट का उपयोग कर रहा हूं। मैं यह कर:


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

कंसोल पर उत्पादन यह है:

डेटा है
रेपर (डेटा) है '\ x00 \ x00 \ x00 \ X01'

मैं इस स्ट्रिंग को अनिवार्य रूप से एक 4 बाइट संख्या को int में बदलना चाहता हूं - या वास्तव में सी में लंबा क्या होगा। मैं इस डेटा ऑब्जेक्ट को एक संख्यात्मक मान में कैसे बदल सकता हूं जिसे मैं आसानी से प्रबंधित कर सकता हूं?

उत्तर

10

शायद आप struct का उपयोग करना चाहते हैं।

import struct 

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

धन्यवाद:

कोड कुछ ऐसा दिखाई देगा। मुझे वास्तव में "myint = unpack ("! I ", डेटा) [0]" करना था क्योंकि "यह बड़ा एंडियन है और यह एक ट्यूपल के रूप में बाहर आता है। अगर आप संपादित करना चाहते हैं तो मैं आपके उत्तर को सही तरीके से चिह्नित करूंगा। सहायता के लिए पुनः धन्यवाद। – chrism1

+0

ट्यूपल भाग मिस गया। :) आपके अनुरोध के जवाब का संपादन किया। – grieve

+0

सिर्फ पैडेंटिक होने के लिए, मेरा मानना ​​है कि आखिरी पंक्ति भी होनी चाहिए: myint = struct.unpack ("! I", डेटा) [0] –

संबंधित मुद्दे