2009-03-27 36 views
5

Xin lỗi cho câu hỏi Python noob nhưng tôi đã bị mắc kẹt về điều này quá lâu.Xử lý đầu ra của ổ cắm python recv

Tôi đang sử dụng ổ cắm python để nhận một số dữ liệu từ máy chủ. Tôi làm điều này:


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

Sản lượng trên console là thế này:

dữ liệu là
repr (dữ liệu) được '\ x00 \ x00 \ x00 \ x01'

Tôi muốn biến chuỗi này chứa một số 4 byte thành một int - hoặc thực sự là cái gì dài trong C. Làm thế nào tôi có thể biến đối tượng dữ liệu này thành một giá trị số mà tôi có thể dễ dàng quản lý?

Trả lời

10

Bạn có thể muốn sử dụng struct.

Mã này sẽ giống như thế:

import struct 

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

Cảm ơn. Tôi thực sự phải làm "myint = unpack ("! I ", dữ liệu) [0]" vì nó là người lớn và nó xuất hiện như một bộ tuple. Nếu bạn muốn chỉnh sửa, tôi sẽ đánh dấu câu trả lời của bạn chính xác. Một lần nữa, cảm ơn bạn vì đã giúp. – chrism1

+0

Thiếu phần tuple. :) Đã chỉnh sửa câu trả lời theo yêu cầu của bạn. – grieve

+0

Chỉ để được pedantic, tôi tin rằng dòng cuối cùng cũng nên là: myint = struct.unpack ("! I", dữ liệu) [0] –

Các vấn đề liên quan