#! /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很簡單,只需要將程式載入到其起始位址,就...