2009-03-27 4 views
5

멍청한 파이썬 질문에 사과드립니다.하지만 너무 오랫동안이 문제에 봉착했습니다.파이썬 소켓의 출력 처리 recv

저는 파이썬 소켓을 사용하여 서버에서 일부 데이터를 수신하고 있습니다. 나는이 작업을 수행 :


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

콘솔에 출력은 이것이다 :

데이터입니다
에 repr (데이터)한다 '\ x00에서 \ x00에서 \ x00부터 \ X01'

본질적으로 4 바이트 수를 포함하는이 문자열을 int로 변환하거나 실제로 C에서 길이가 길어 지도록하고 싶습니다.이 데이터 객체를 쉽게 관리 할 수있는 숫자 값으로 변환하려면 어떻게해야합니까?

답변

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

감사 :

코드는 같을 것이다. 빅 엔디 언 (big-endian)이기 때문에 실제로는 "myint = unpack ("! i ", data) [0]"을 수행해야했으며 터플로 나타납니다. 편집하고 싶다면 답을 올바르게 표시하겠습니다. 다시 도움을 주셔서 감사합니다. – chrism1

+0

튜플 부분을 놓쳤습니다. :) 귀하의 요청에 따라 답변을 수정했습니다. – grieve

+0

그냥 pedantic하기 위해서, 나는 마지막 줄도 있어야한다고 생각합니다 : myint = struct.unpack ("! i", data) [0] –