You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何实现整数元组的可逆压缩及还原?

解决方案:基于位拼接的可逆压缩方案

因为你的元组长度固定为5,且每个元素的取值范围是0~100000,刚好小于2^17(131072),所以可以通过位运算把5个整数拼接成单个整数,运算速度极快,且完全可逆。

实现代码

# 每个元素分配的位宽,2^17=131072 > 100000,足够存储所有元素
BITS_PER_NUM = 17
# 位掩码,用于解压时提取低17位
MASK = (1 << BITS_PER_NUM) - 1

def compress(tup):
    res = 0
    for i, num in enumerate(tup):
        res |= num << (i * BITS_PER_NUM)
    return res

def decompress(compressed_val):
    tup = []
    val = compressed_val
    for _ in range(5):
        tup.append(val & MASK)
        val >>= BITS_PER_NUM
    return tuple(tup)

使用示例

test_tuple = (520, 203, 9721, 12, 4839)
compressed = compress(test_tuple)
og_tuple = decompress(compressed)

print(compressed) # 输出压缩后的单个整数
print(og_tuple == test_tuple) # 输出True,验证还原正确性

方案优势

  • 运算效率极高:全程只有位运算,无额外IO、编码开销,适合处理大量元组的场景
  • 内存占用极低:压缩后的值是一个85位的整数,存储仅需要约11字节,远小于原生5元素整数元组的内存占用
  • 无信息损失:可以100%还原原始元组的所有值

内容的提问来源于stack exchange,提问作者Nick Keener

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:48:03