编辑代码

# 获取CRC32生成多项式
def get_crc32_polynomial():
    return 0x04C11DB7

# 初始化CRC寄存器
def initialize_crc_register():
    return 0xFFFFFFFF

# 计算CRC32校验码
def calculate_crc32(data):
    crc_register = initialize_crc_register()
    crc_polynomial = get_crc32_polynomial()

    # 对每个字节进行 CRC 计算
    for byte in data:
        crc_register ^= (byte << 24)
        for _ in range(8):
            if crc_register & 0x80000000:
                crc_register = (crc_register << 1) ^ crc_polynomial
            else:
                crc_register = crc_register << 1

    crc_register ^= 0xFFFFFFFF
    return crc_register

# 将十六进制字符串转换为字节数组
def hex_to_bytes(hex_string):
    # 将十六进制字符串转换为字节数组
    return bytes.fromhex(hex_string)

# 测试代码
hex_input = "48656C6C6F2C205843523221"  # "Hello, CRC32!" 的十六进制表示
data = hex_to_bytes(hex_input)

# 计算CRC32
crc32 = calculate_crc32(data)

# 输出结果(以十六进制格式显示)
print(f"CRC32: {crc32:08X}")