解码器生成字符串按2、1字节交替规则拆分不等分组最佳实践
十六进制字符串按2字节/1字节交替拆分最佳实现
规则前置说明
业务场景下十六进制字符串的1字节固定对应2个字符,因此题目要求的「2字节、1字节交替拆分」,实际对应切分步长为4个字符、2个字符循环交替,不需要提前硬编码每个分组的位置,通用逻辑可适配所有符合该规则的输入。
测试用例输入:s = '00EF0100F001001503'
预期输出:['00EF', '01', '00F0', '01', '0015', '03']
通用实现逻辑(以Python为例,其他语言可直接平移逻辑)
s = '00EF0100F001001503' split_result = [] current_pos = 0 # 交替步长队列:2字节对应4字符,1字节对应2字符 steps = [4, 2] step_pointer = 0 while current_pos < len(s): # 取当前轮次对应步长 step = steps[step_pointer % 2] # 截取子串加入结果集 split_result.append(s[current_pos:current_pos+step]) # 移动字符串读取位置 current_pos += step # 切换下一轮次步长 step_pointer += 1
执行后split_result的返回值和预期输出完全一致。
方案优势
- 无硬编码:不需要提前计算每个分组的偏移位置,支持任意长度的同规则字符串拆分
- 易维护:如果后续需要调整拆分规则(比如改成1字节/2字节交替、3字节/1字节交替),仅需修改
steps数组内的步长值即可,不需要重构整体逻辑 - 兼容性强:如果输入字符串末尾存在不足步长的残段,代码会自动截取剩余内容,不会触发索引越界错误;如果业务要求格式严格合法,可在拆分后增加校验逻辑,检查每个分组的长度是否符合步长预期,异常时抛出格式错误即可。
内容的提问来源于stack exchange,提问作者duke_m
相关产品推荐
相关产品推荐

