python計算bin檔案CRC

2021-10-09 15:48:13 字數 1399 閱讀 3950

#! /usr/bin/env python

# -*- coding:utf-8 -*-

import binascii

import os

import sys

def crc2hex(crc):

res=

''for i in range(4):

t=crc & 0xff

crc >>

= 8 res=

'%02x%s' % (t, res)

return res

inputfile =

"/data/test.bin"#實際存放的bin檔案路徑

isfile = os.path.isfile(inputfile)

;print(inputfile)

;fp = open(inputfile, "r+b"

)#直接開啟乙個檔案,如果檔案不存在則建立檔案

filesize = os.path.getsize(inputfile)

print(

)#計算bin檔案的crc,首先清空crc32區域的4個byte

fp.seek(0x1c, 0)

#從bin檔案開始,偏移位址為0x1c的地方存放bin的crc32

clear4bytes =

'00000000'

c4 =binascii.unhexlify(clear4bytes)

fp.write(c4)

#將crc32存放的區域4bytes清零

fp.seek(0, 0)

#從0開始讀取整個bin

file_content = fp.read(

)#讀整個檔案內容到 file_content

crc = binascii.crc32(file_content)

print(

'crc32:', hex(crc))

fp.seek(0x1c, 0)

#從bin檔案開始,偏移位址為0x1c的地方存放bin的crc32

#存放計算crc32四個位元組

crcstr_2 = crc2hex(crc)

r=binascii.unhexlify(crcstr_2)

fp.write(r)

fp.close(

)sys.exit(0)

##正常退出

計算bin檔案crc32主要用到python模組binascii,詳細介面說明可以參考文件:

執行

python crc.py
校驗結果

與指令碼計算的結果一致。

C Hex檔案轉Bin檔案

好吧 我接觸到微控制器的一點點東西了 今天要在web上面做乙個對硬體的遠端公升級,給我的是bin檔案或者是hex檔案,傻了沒搞過,發現讀bin不太會搞,讀hex是ascii碼然後轉哈哈 首先需要了解以下hex的檔案資訊 intel hex檔案是記錄文字行的ascii文字檔案,在intel hex檔案...

ELF檔案和BIN檔案

檔案的內容 1.bin檔案是 raw binary 檔案,這種檔案只包含機器碼。2.elf檔案除了機器碼外,還包含其它額外的資訊,如段的載入位址,執行位址,重定位表,符號表等。所以elf檔案的體積比對應的bin檔案要大。檔案的執行 1.執行raw binary很簡單,只需要將程式載入到其起始位址,就...

ELF檔案和BIN檔案

檔案的內容 1.bin檔案是 raw binary 檔案,這種檔案只包含機器碼。2.elf檔案除了機器碼外,還包含其它額外的資訊,如段的載入位址,執行位址,重定位表,符號表等。所以elf檔案的體積比對應的bin檔案要大。檔案的執行 1.執行raw binary很簡單,只需要將程式載入到其起始位址,就...