如何将两个超大十六进制范围拆分为50万至100万个等分子区间
十六进制大区间拆分方案
核心逻辑
Python原生支持任意精度大整数,无需依赖numpy即可处理120位级别的数值计算,完全规避数值溢出问题。
实现步骤
- 定义起止范围的原生整数值,计算区间总长度
- 设定拆分数量(取值范围500000~1000000,可自行调整),计算单块大小
- 逐一生成子区间的起止数值,转换为无前缀十六进制字符串,补前导零对齐30位长度
代码实现
# 定义原始区间 START = 0x800000000000000000000000000000 END = 0xffffffffffffffffffffffffffffff # 设定拆分数量,可在500000~1000000之间调整 SPLIT_COUNT = 750000 # 计算单块大小 total = END - START + 1 block_size = total // SPLIT_COUNT # 生成结果列表 result = [] current = START for i in range(SPLIT_COUNT): block_end = current + block_size - 1 # 最后一块直接对齐原始结束值,避免整除误差 if i == SPLIT_COUNT - 1: block_end = END # 转十六进制,去掉0x前缀,补前导零到30位 start_str = hex(current)[2:].zfill(30) end_str = hex(block_end)[2:].zfill(30) result.append([start_str, end_str]) current = block_end + 1
输出说明
生成的result就是符合要求的多维列表,每个子项都是30位无前缀十六进制字符串的区间,示例格式如下:
[['800000000000000000000000000000', '80000000000000000004189374bc6a'], ...]
内容的提问来源于stack exchange,提问作者dlystyr
相关产品推荐
相关产品推荐

