import struct import binascii # 下载文件 with open('test_data.bin', 'rb') as f: data = f.read() print(f"Total size: {len(data)} bytes") print(f"First 16 bytes: {data[:16].hex()}") # 数据部分(不包括最后4字节CRC) data_only = data[:-4] crc_stored = struct.unpack('I', data[offset:offset+4])[0] # 大端读取 word_bytes = struct.pack('>I', word) # 再转回字节 crc = binascii.crc32(word_bytes, crc) & 0xFFFFFFFF offset += 4 # 处理剩余字节(补零对齐) if offset < len(data): remaining = data[offset:] word_bytes = remaining + b'\x00' * (4 - len(remaining)) crc = binascii.crc32(word_bytes, crc) & 0xFFFFFFFF return crc crc_word_be = crc32_word_mode_be(data_only) print(f"3. Word mode (big-endian, init=0): 0x{crc_word_be:08X}") # 检查匹配 print(f"\n{'✓ MATCH!' if crc_standard == crc_stored else '✗ No match'} - Standard") print(f"{'✓ MATCH!' if crc_word_le == crc_stored else '✗ No match'} - Word LE") print(f"{'✓ MATCH!' if crc_word_be == crc_stored else '✗ No match'} - Word BE")