处理来自Python socket的recv数据

0 投票
3 回答
2887 浏览
提问于 2025-04-16 14:32

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

data = self.socket.recv(4096)

我该如何从这些数据中获取第一个无符号短整型数呢?这些数据看起来是这样的:

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

3 个回答

0

这是个老问题,但我觉得还是有必要分享一个更好的解决方案:

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

注意这里使用了,,这是为了正确地拆解返回的1元组。

0

这是我想到的:

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

如果你说的无符号短整型是指两个字节,那就直接这样做:

data[:2]

如果你知道并且预计要解析的数据块大小,可以使用struct这个库。

撰写回答