Как преобразовать данные, полученные из udp в ctype struct в Python?


Я использую Python 2.7.6 под структуру:

class TestStruct(Structure):
   _fields_=[
          ("ValueA",c_int),
          ("StringA",c_char*9)
          ]

И я получаю данные из udp следующим образом:

    sock = socket.socket(socket.AF_INET,
                         socket.SOCK_DGRAM)
    sock.bind((self.__ip,self.__port))
    print("Starting Receiving......")
    while True:
        try:
            (data,addr) = sock.recvfrom(1024)
            t = cast( data, POINTER(TestStruct))
            print t.ValueA
            #print(data[0])
            #print(type(data))
        except Exception,ex:
            print ex
            break

Как вы можете видеть, я использую "cast", но то, что он преобразовал, - это тот, чей тип выглядит следующим образом:"main.LP_TestStruct".

Я хочу получить объект TestStruct, какую функцию я должен использовать ? Спасибо!

1 2

1 ответ:

Вы можете сделать t.contents, чтобы получить объект, на который указывает указатель (TestStruct). Но я думаю, что вам было бы еще лучше использовать для этого модуль Python struct (как упоминал @eryksun).