#!/usr/bin/env python3
import re

def process_hex_units_v2():
    # ==========================================
    # 请在这里填入要处理的十六进制字符串
    INPUT_HEX_STRING = "88AC8ED288ADAEF268CEC7F2084FECF2490C8FD249A6ADF229C6CCF2A90CE9F2082403A9284F8ED228EAA6F2480DCAF26805E7F2A98D8ED289C8A8F2E905CEF2292FEBF2082404A988498ED248E9AAF268E9CAF22888ECF2A9C88ED269E6AEF2494BCEF2E989EEF2082405A948ED89D2484BAFF2A88CC9F2E808EAF2496F8ED2A96DADF269ECCCF2C96DECF2082406A9E8EC8DD2480AADF2088BC6F2888CEAF2692586D2298DAEF269AAC9F2492AE7F2082407A9482D87D2A80DA6F2E8E5C9F2E86EEEF2094986D2A9EAADF2C9C8C6F2A96AE6F2082408A9488689D2086FA8F2E829CAF2E82AEAF2892886D229A8A9F2E92CC9F2494BEDF2082409A928688DD248A9ACF248C9CEF2C888EAF2498E8ED2C90DA7F2C9ACC9F2292AE6F208240AA9E80686D22866A8F2684DCCF2288CE9F289CA8AD22949ADF249AAC9F2898DEAF208240BA9E80E87D268CDA9F208CBCEF2C829E8F2E92588D229A7AAF2298CCEF2E92DEDF208240CA988A88DD2288DA6F288CAC8F2E8C8E6F2A94D8ED2098FAAF26949CBF2092EE9F208240DA9688C8AD228C9ADF2C80ECAF2A808EEF2696D89D24926A8F2E926CAF2690EEEF208240EA928A688D28866AEF268CDC8F26809E7F249AD8DD2296FAEF229EFC6F2A94EEAF208240FA908AD89D2282CABF20889CEF2088AEAF2694E88D2C90EAFF2090AC6F249CFEDF2082410A968868DD2086DA9F24868C6F2E86AE5F209898AD2290EAEF2C9ADCCF2A9ECEEF2082411A908EB8AD20849ADF26888C8F2C88CE9F2E9C689D2494CACF2292FC7F22946EDF2082412A9484C8FD2A8A6A8F26809CAF2480BEBF2E98A89D2A90EADF2092BC9F2C94EEAF2082413A9286688D2A88EA6F2882ECDF248AEEEF2E94D8ED2E90EABF24909CFF2A90DEBF2082414A9280C8AD22806A9F2284ACBF2E8CDEDF2298F8ED2A968A8F2C9A9CAF2E9A5EAF2082415A9E8498FD208CAA6F2E8C8C9F28889ECF2290E86D2A9CCA8F289A8C8F28946ECF2082416A9088686D2E84AADF2086EC6F228C7E6F2A9A686D229E6A8F22927C7F2292BEDF2082417A9C8088AD248C6ADF2280EC9F2C84AE9F2A9E689D2A929AAF2A9A7C7F289E7E5F2082418A9"
    # ==========================================
    
    # ==========================================
    # 请在这里填入用于添加和替换的十六进制字符串
    REPLACEMENT_HEX_STRING = ""
    # ==========================================
    
    if not INPUT_HEX_STRING:
        print("错误: 请先填写 INPUT_HEX_STRING")
        return
    
    if not REPLACEMENT_HEX_STRING:
        print("错误: 请先填写 REPLACEMENT_HEX_STRING")
        return
    
    clean_hex = re.sub(r'\s+', '', INPUT_HEX_STRING)
    replacement_hex = re.sub(r'\s+', '', REPLACEMENT_HEX_STRING)
    
    print(f"原始长度: {len(clean_hex)} 字符")
    print(f"替换字符串长度: {len(replacement_hex)} 字符")
    
    if len(clean_hex) % 72 != 0:
        print(f"警告: 长度 {len(clean_hex)} 不是72的倍数")
    
    result = ""
    replacement_index = 0
    part_count = 0
    
    for i in range(0, len(clean_hex), 72):
        part = clean_hex[i:i+72]
        part_count += 1
        
        if len(part) == 72:
            print(f"\n部分 {part_count}:")
            
            unit1 = part[0:32]
            unit2 = part[32:64]
            add_section_original = part[64:72]
            
            print(f"  单元1: {unit1}")
            print(f"  原待添加段: {add_section_original}")
            print(f"  单元2: {unit2}")
            
            # 单元1按原规则处理，单元2保持不变
            processed_unit1 = process_unit_by_groups(unit1)
            processed_unit2 = unit2
            print(f"  单元1按原规则处理（每组首对+1），单元2保持不变")
            
            print(f"  处理后的单元1: {processed_unit1}")
            print(f"  处理后的单元2: {processed_unit2}")
            
            # 提取待添加的8字
            add_start = replacement_index + 32
            add_end = add_start + 8
            add_section = replacement_hex[add_start:add_end]
            print(f"  新待添加段: {add_section} (从位置{add_start}提取)")
            
            # 提取需要替换的8字
            replace_start = add_end + 32
            replace_end = replace_start + 8
            replace_section = replacement_hex[replace_start:replace_end]
            print(f"  替换段: {replace_section} (从位置{replace_start}提取)")
            
            replacement_index += 80
            
            processed_part = processed_unit1 + add_section + processed_unit2 + replace_section
            result += processed_part
            print(f"  处理后的部分: {processed_part}")
            
        else:
            print(f"\n不完整部分 {part_count}: {part} (保持原样)")
            result += part
    
    print("-" * 80)
    print(f"处理结果长度: {len(result)} 字符")
    print(f"总共处理了 {part_count} 个部分")
    
    print("\n" + "=" * 80)
    print("最终处理结果:")
    print("=" * 80)
    print(result)
    print("=" * 80)
    
    return result

def process_unit_by_groups(unit):
    """处理一个单位内的4组（每组8字符，首对+1）"""
    result = ""
    
    for i in range(0, len(unit), 8):
        group = unit[i:i+8]
        
        if len(group) == 8:
            first_pair = group[0:2]
            rest = group[2:8]
            
            try:
                first_val = int(first_pair, 16)
                new_first_val = (first_val + 1) % 256
                new_first_pair = f"{new_first_val:02X}"
                new_group = new_first_pair + rest
                result += new_group
            except ValueError:
                result += group
        else:
            result += group
    
    return result

if __name__ == "__main__":
    process_hex_units_v2() 