如何编写Python函数将整数列表转换为指定格式的十六进制字符串?
解决方案
先明确从输入输出反推的处理规则:
- 数字范围在10-15之间时:
- 第一次出现该数字,拼接它的十进制字符串(比如10 → "10")
- 后续连续重复的同数字,拼接它的大写十六进制单字符(比如10 → "A")
- 数字不在10-15范围时,直接拼接十进制字符串
- 当从10-15的连续重复段切换到非10-15数字时,先加冒号再拼接后者
以下是修正后的代码:
def int_to_string(data): if not data: return "" result = [] prev_num = data[0] # 处理第一个元素 if 10 <= prev_num <= 15: result.append(str(prev_num)) repeated_hex = True else: result.append(str(prev_num)) repeated_hex = False for num in data[1:]: # 处理10-15之间的重复数字 if 10 <= num <= 15 and num == prev_num: hex_char = hex(num)[2:].upper() result.append(hex_char) repeated_hex = True else: # 从重复段切换到普通数字时插入冒号 if repeated_hex: result.append(":") repeated_hex = False result.append(str(num)) prev_num = num return ''.join(result) # 测试 test_list = [2,10,10,10,4,5] print(int_to_string(test_list)) # 输出: 210AA:45
代码说明
- 用列表
result拼接内容比直接字符串拼接更高效(字符串不可变,每次拼接都会生成新对象) repeated_hex标记当前是否处于10-15的重复数字段,用于判断是否需要添加冒号分隔- 对10-15的重复数字,首次添加十进制字符串,后续添加大写十六进制单字符
- 当从重复段切换到普通数字时,自动插入冒号
内容的提问来源于stack exchange,提问作者Angels Vásquez
相关产品推荐
相关产品推荐

