2009-03-27 20 views
5

Noob Python sorusu için özür dilerim ama bu konuda çok fazla uzadım.Python soketinin çıktısı geri çekiliyor

Sunucudan bazı verileri almak için python yuvaları kullanıyorum. Bunu yapmak:


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

Konsolda çıktı şudur:

verilerdir
repr (veri) olduğu '\ x00 \ x00 \ x00 \ x01'

Temel olarak 4 baytlık bir sayı içeren bu dizgiyi bir c veya uzun bir C'ye dönüştürmek istiyorum. Bu veri nesnesini kolayca yönetebileceğim sayısal bir değere nasıl dönüştürebilirim?

cevap

10

Muhtemelen struct'u kullanmak istiyorsunuz.

import struct 

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

teşekkür:

kodu aşağıdaki gibi olacaktır. Aslında "myint = unpack ("! I ", data) [0]" yapmak zorunda kaldım çünkü büyük endian ve bir tuple çıkıyor. Düzenlemek isterseniz cevabınızı doğru olarak işaretleyeceğim. Yine, yardım için teşekkürler. – chrism1

+0

Tuple bölümünü kaçırdım. :) İsteğinize göre cevabı düzenledim. – grieve

+0

Sadece pedantic olmak için son satırın da olması gerektiğine inanıyorum: myint = struct.unpack ("! I", data) [0] –

İlgili konular