您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用python中的struct模块打包和解包可变长度数组/字符串

使用python中的struct模块打包和解包可变长度数组/字符串

struct模块仅支持固定长度的结构。对于变长字符串,您可以选择以下任一种:

动态构造格式字符串(str将abytes传递给之前,必须将其转换为a pack()):

s = bytes(s, 'utf-8')    # Or other appropriate encoding

struct.pack(“I%ds” % (len(s),), len(s), s)

跳过struct并仅使用普通的字符串方法将字符串添加到您的pack()-ed输出中:struct.pack("I", len(s)) + s

要打开包装,您只需要一次打开一些包装:

(i,), data = struct.unpack("I", data[:4]), data[4:]
s, data = data[:i], data[i:]

如果您要执行很多操作,则始终可以添加一个calcsize用于执行字符串切片的辅助函数

def unpack_helper(fmt, data):
    size = struct.calcsize(fmt)
    return struct.unpack(fmt, data[:size]), data[size:]
python 2022/1/1 18:35:15 有228人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶