如何确定0-99数字组合字符串的gzip/Brotli压缩长度上限?
逗号分隔数字串压缩长度上限验证方案
核心思路
要确定所有符合规则的数字字符串(0-99无重复、升序排列、1-100个数字)经gzip/Brotli压缩后的最大长度,关键是找到冗余度最低、明文长度最长的极端样本,通过实际测试得到明确上限。
具体实施步骤
- 构造最坏情况样本:
选择数字类型交替、无连续规律的组合,比如混合单数字(0-9)和两位数字(10-99),且数字跳跃无规律,例如:9,10,8,11,7,12,6,13,5,14,4,15,3,16,2,17,1,18,0,19,...。重点生成明文长度接近289字符的全量数字组合(即包含100个数字的最“无规律”排列),这类样本冗余度最低,压缩后长度最可能接近上限。 - 批量测试极端样本:
编写脚本生成所有典型极端组合(单双数交替、无规律跳跃等),对每个样本分别执行gzip和Brotli压缩,记录压缩后的字节长度。重点聚焦明文长度最长的样本,因为原长越长,压缩后长度上限越高。 - 考虑压缩算法固定开销:
gzip和Brotli都有固定的压缩头开销(gzip头约10-15字节,Brotli头更小)。对于几乎无冗余的数据,压缩后长度≈原长+头开销,但实际中算法会做轻微编码优化,实际长度会略低于这个理论值。 - 验证最终上限:
测试最极端样本的压缩结果,如果gzip和Brotli压缩后的长度均≤255,则所有组合的压缩结果都符合API限制;若超过,可考虑改用二进制编码(比如将数字按单字节存储,再压缩)等更紧凑的格式进一步降低长度。
内容的提问来源于stack exchange,提问作者annoyed_developer_2022
相关产品推荐
相关产品推荐

