如何将从udp接收的数据转换为Python中的ctype结构?

时间:2014-03-17 10:32:27

标签: python byte tuples ctypes typeconverter

我正在使用Python 2.7.6 ctypes struct:

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

正如你所看到的,我正在使用“强制转换”,但它转换的是类型如下:“ main .LP_TestStruct”。

我想得到的是TestStruct对象,我应该使用什么功能? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以t.contents获取指针指向的对象(TestStruct)。但我想你最好还是使用Python的struct模块(就像@eryksun提到的那样)。