【问题标题】:Handling data from Python socket recv处理来自 Python 套接字 recv 的数据
【发布时间】:2011-03-27 21:36:27
【问题描述】:

我正在使用 Python 2.7 套接字来接收数据:

data = self.socket.recv(4096)

如何从数据中检索第一个 unsigned short?数据如下所示:

>>> print repr(data) 
'\x00\x053B2D4C24\x00\x00\x01\x00...'

【问题讨论】:

    标签: python sockets recv


    【解决方案1】:

    如果 unsigned short 的意思是两个字节,那就这样做:

    data[:2]
    

    如果您知道并期望解析一定大小的数据,您可以使用struct 库。

    【讨论】:

    • 是的,这是显而易见的答案。可能有一种更优雅的方法,但现在我将使用你所拥有的变体。
    【解决方案2】:

    这是我想出的:

    s = struct.Struct('H')
    num = int('0x' + ''.join(x for x in repr(packet[:s.size]) if x.isdigit()), 0)
    

    【讨论】:

      【解决方案3】:

      老问题,但我想我还是会发布一个更好的解决方案:

      value, = struct.unpack('H', data[:2])
      

      注意, 的用法,以便正确解压缩返回的 1 元组。

      【讨论】:

        猜你喜欢
        • 2012-08-05
        • 1970-01-01
        • 1970-01-01
        • 2016-11-25
        • 2012-07-02
        • 2012-04-23
        • 1970-01-01
        • 1970-01-01
        • 2019-08-16
        相关资源
        最近更新 更多