Hex檔案格式及其校驗演算法
:AABBBBCCDD......DDEE
其中
: 表示行起始標誌
AA:表示本條記錄中的資料位元組數
BBBB:本條記錄中的資料在儲存區中的起始地址
CC:記錄型別,含義如下:
'00' Data Record
'01' End of File Record
'02' Extended Segment Address Record
'03' Start Segment Address Record
'04' Extended Linear Address Record
'05' Start Linear Address Record
EE:表示校驗和,具體演算法為 0x100-((0xAA+0xBB+0xBB+0xCC+0xDD+......+0xDD)%256)
示例:
:020000040000FA , 我把它看做 0x02 0x00 0x00 0x04 0x00 0x00 0xFA
其中:
0x02:表示本記錄有效資料長度為0x02
0x0000:表示本條記錄在
0x04:表示本條記錄為Extended Linear Address Record
接下來的兩個位元組表示有效資料
0xFA:表示校驗和 0xFA=0x100-(0x02+0x00+0x00+0x04+0x00+0x00)
最後一行為檔案結束標誌:
:00000001FF
Hex實際佔用儲存區大小計算辦法
Hex實際大小=檔案結束標誌前面一條記錄的儲存起始地址+這條記錄的有效資料長度
相關校驗測試程式:
下面演算法實現記錄的校驗,校驗成功返回1,失敗返回0
-
bit AnalyseHEX(char hex[],int len)
-
{
-
unsigned char i=1;
-
unsigned char data;
-
int cc=0;
-
char temp[2];
-
do
-
{
-
temp[0] = hex[i++];
-
temp[1] = hex[i++];
-
sscanf(temp,"%x",&data);
-
cc += data;
-
} while (i<(len-2));
-
cc%=256;
-
cc=0x100-
-
temp[0] = hex[i++];
-
temp[1] = hex[i++];
-
sscanf(temp,"%x",&data);
-
return (cc==data)?1:0;
-
}
-
int _tmain(int argc, _TCHAR* argv[])
-
{
-
char hex[]="::020000040000FA";
-
AnalyseHEX(hex,sizeof(hex));
- }
相關推薦
Hex檔案格式及其校驗演算法
hex 檔案記錄格式如下: :AABBBBCCDD......DDEE 其中: 表示行起始標誌AA:表示本條記錄中的資料位元組數BBBB:本條記錄中的資料在儲存區中的起始地址 CC:記錄型別,含義如下: '00' Data
關於CRC校驗演算法及其C程式碼實現
以CRC16作為參考: CRC16常見的標準有以下幾種,被用在各個規範中,其演算法原理基本一致,就是在資料的輸入和輸出有所差異,下邊把這些標準的差異列出,並給出C語言的演算法實現。 CRC16_
Android中的時間格式的校驗
imp pri .text protected oncreate @override ast activity ext public class MainActivity extends Activity implements OnClickListener{ priva
C語言 CRC32校驗演算法
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef signed char s8; typedef unsigned char u8; typedef signed shor
CentOs檔案的完整性校驗
linux md5sum hero.png fefd01c9db6e3e83b978eff1b7a67c02 hero.png sha1sum hero.png f1e929db9cef34a8786ee4b6246fb739566c799d hero.png
累加和校驗演算法(CheckSum演算法)
因為外界總會對電路存在或多或少的干擾,對於數字訊號,很可能導致傳輸的資料出現千差萬別。對於很多需要傳輸資料的場合,尤其是一些資料可能會影響一些硬體的動作(諸如嵌入式的一些裝置、機器人等),錯誤的資料可能會帶來一些隱性風險,想想都可怕。 由於本人是嵌入式相關領域的,平時玩的都是微控制器,當然微
檔案上傳校驗繞過總結
檔案上傳校驗 前端javascript校驗(一般只校驗字尾名) 服務端校驗 檔案頭content-type欄位校驗(image/gif) 檔案內容頭校驗(GIF89a) 字尾名黑名單校驗 字尾名白名單校
java實現CRC16 MODBUS校驗演算法
最近做通訊開發,遇到了校驗碼的問題 我在這個網站上試了試 裡面有各種crc16的校驗碼 廢話不多說,直接上程式碼 /** * 計算CRC16校驗碼 * * @param bytes * @return
java 進行檔案的crc校驗
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; impor
hex檔案格式學習記錄
.hex檔案 .hex檔案是什麼 .hex檔案的資料結構 按照記錄型別具體分析 Mermaid Flowchart .hex檔案是什麼 它是由一行行符合Intel HEX 檔案格式的文字所構成的ASCII
CRC校驗演算法及實現 C
標準CRC生成多項式如下表: 名稱 生成多項式 簡記式* 標準引用 CRC-4 x4+x+1 3 ITU G.704 CRC-8 x8+x5+x
Modbus CRC16校驗演算法--查表法(已經過本人測試,工作良好)
程式碼如下: uchar auchCRCHi[]= { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0
STM32學習筆記--hex檔案格式
hex 是 Intel 公司制定的一種使用 ASCII 文字記錄機器碼或常量資料的檔案格式,它可以燒錄到MCU中,被MCU執行的一種檔案格式。一個hex檔案由多條記錄組成,而每條記錄由5個部分組成, 格式如下: “:
車輛VIN碼的校驗演算法
一、關於車輛的VIN碼介紹: 直接百度 二、VIN碼的校驗位是第九位,對於第九位的計算方法如下: 2.1 內容的權值:VIN碼各位數字的“對應值”: 0 1 2 3 4 5 6 7 8 9
Luhn algorithm(附信用卡校驗演算法C語言實現)
From Wikipedia, the free encyclopedia The Luhn algorithm or Luhn formula, also known as the "modulus 10" or "mod 10" algorithm, is a simple checksum formu
Java使用luhn校驗演算法實現銀行卡號合法性校驗&&獲取銀行卡號所屬銀行
Luhn校驗演算法或是Luhn 公式,也被稱作“模10演算法”。它是一種簡單的校驗公式,一般會被用於身份證號碼,IMEI號碼,美國供應商識別號碼, 或是加拿大的社會保險號碼的驗證。該演算法是由IBM的科學家Hans Peter Luhn所創造,於1954年1月6日提出該
SHA1校驗演算法C語言實現
SHA1 安全雜湊演算法:對於長度小於2^64位的訊息(1M = 1024k,1K = 1024位元組,1BYTE = 8bit 可以想象一下2的63次方位可以表示一個多大的資料檔案),SHA1會產生一個160位的訊息摘要。當接收到訊息的時候,這個訊息摘要可以用來驗證資料的
java實現銀行卡卡號 Luhm 校驗演算法
效驗是否為銀行卡,用於驗證 現行 16 位銀聯卡現行卡號開頭 6 位是 622126~622925 之間的,7 到 15 位是銀行自定義的,可能是髮卡分行,髮卡網點,髮卡序號,第 16 位是校驗碼。16 位卡號校驗位採用 Luhm 校驗方法計算:1,將未帶校驗位的 1
[轉]常用正則表示式大全-----使用者名稱、密碼、郵箱、等資料格式的校驗
正則表示式收集,供自己查閱之用 轉自:http://www.jb51.net/article/72867.htm 一、校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^
Java實現身份證校驗演算法
public class ValidateNumberId { private static String[] validtable = {"1","0","X","9","8","7",