青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版MSDN

Blog @ Blog

當華美的葉片落盡,生命的脈絡才歷歷可見。 -- 聶魯達

常用鏈接

統計

積分與排名

BBS

Blog

Web

最新評論

hex格式介紹及轉bin格式的源程序

Intel HEX文件是記錄文本行的ASCII文本文件,在Intel HEX文件中,每一行是一個HEX記錄,由十六進制數組成的機器碼或者數據常量。Intel HEX文件經常被用于將程序或數據傳輸存儲到ROMEPROM,大多數編程器和模擬器使用Intel HEX文件。

       很多編譯器的支持生成HEX格式的燒錄文件,尤其是Keil c。但是編程器能夠下載的往往是BIN格式,因此HEXBIN是每個編程器都必須支持的功能。

       HEX格式文件以行為單位,每行由“:”(0x3a)開始,以回車鍵結束(0x0d,0x0a)。行內的數據都是由兩個字符表示一個16進制字節,比如01”就表示數0x010a,就表示0x0a。對于16位的地址,則高位在前低位在后,比如地址0x010a,在HEX格式文件中就表示為字符串010a。下面為HEX文件中的一行:

:10000000FF0462FF051EFF0A93FF0572FF0A93FFBC

       “:”表示一行的開始。

       “:”后的第12個字符“10表示本行包含的數據的長度,這里就是0x1016個。

       3456個字符“0000表示數據存儲的起始地址,這里表示從0x0000地址開始存儲16個數據,其中高位地址在前,低位地址在后。

       78個字符“00表示數據的類型。該類型總共有以下幾種:

00 ----數據記錄      
01 ----
文件結束記錄
02 ----
擴展段地址記錄
04 ----
擴展線性地址記錄

這里就是0x00即為普通數據記錄。

自后的32個字符就是本行包含的數據,每兩個字符表示一個字節數據,總共有16個字節數據跟行首的記錄的長度相一致。

最后兩個字符表示校驗碼。

每個HEX格式的最后一行都是固定為:

:00000001FF

       以上的信息其實就足夠進行HEXBIN格式的程序的編寫。首先我們只處理數據類型為0x000x01的情況。0x02表示對應的存儲地址超過了64K,由于我的編程器只針對64K以下的單片機,因此在次不處理,0x04也是如此。

       我的編程思路是從文件中一個一個讀出字符,根據“:”判斷一行的開始,然后每兩個字符轉換成一個字節,并解釋其對應的意義。然后將數據從該行中剝離出來保存到緩沖區中,并最終輸出到文件中。

       具體程序如下,該程序在VC2005下采用控制臺項目編譯,需要在release下編譯,在debug模式中會提示一個dll文件無法找到,這可能是VC自身的錯誤。

// hextobin.cpp : 定義控制臺應用程序的入口點。

//

 

  1#include "stdafx.h"
  2
  3#include <malloc.h>
  4
  5#include <memory.h>
  6
  7typedef unsigned char BYTE;
  8
  9 
 10
 11//將兩個字符轉化為一個字節量
 12
 13void CharToByte(char* pChar,BYTE* pByte)
 14
 15{
 16
 17     char h,l;
 18
 19     h=pChar[0];//高位
 20
 21     l=pChar[1];//低位
 22
 23     if(l>='0'&&l<='9')
 24
 25         l=l-'0';
 26
 27     else if(l>='a' && l<='f')
 28
 29         l=l-'a'+0xa;
 30
 31     else if(l>='A' && l<='F')
 32
 33         l=l-'A'+0xa;
 34
 35     if(h>='0'&&h<='9')
 36
 37         h=h-'0';
 38
 39     else if(h>='a' && h<='f')
 40
 41         h=h-'a'+0xa;
 42
 43     else if(h>='A' &&<='F')
 44
 45         h=h-'A'+0xa;
 46
 47     *pByte=(BYTE)h*16+l;
 48
 49}

 50
 51 
 52
 53int _tmain(int argc, _TCHAR* argv[])
 54
 55{
 56
 57     char fileName[100];
 58
 59     char data[2];
 60
 61     BYTE *outBuf;
 62
 63     FILE *myFile;
 64
 65     int len;
 66
 67     int i;
 68
 69     BYTE adressHigh;
 70
 71     BYTE adressLow;
 72
 73     BYTE dataLen;
 74
 75     BYTE dataType; 
 76
 77     BYTE byteData;
 78
 79     int totalLen;
 80
 81     totalLen = 0;
 82
 83     len = 0;
 84
 85     adressHigh = 0;
 86
 87     adressLow = 0;
 88
 89     dataLen = 0;
 90
 91     dataType = 0;
 92
 93     printf("請輸入HEX格式文件名:");
 94
 95     scanf_s("%s",fileName);
 96
 97     printf("\n");
 98
 99     if (fopen_s(&myFile,fileName,"r"!= 0)
100
101     {
102
103         printf("打開文件%s失敗!",fileName);
104
105     }

106
107     //將文件長度計算出來用于申請存儲數據的緩沖區
108
109     while (!feof(myFile))
110
111     {
112
113         ++len;
114
115         fgetc(myFile);
116
117     }

118
119     rewind(myFile);
120
121     //因為是每兩個字符表示一個字節,所以最大的數據個數要少于文件字符個數的一半
122
123     outBuf = (BYTE*)malloc(len/2);
124
125     memset(outBuf,0xff,len/2);
126
127     while (!feof(myFile))
128
129     {
130
131         //:號表示一行的開始
132
133         if (fgetc(myFile) == ':')
134
135         {
136
137              //一行的頭兩個字符表示該行包含的數據長度
138
139              data[0= fgetc(myFile);
140
141              data[1= fgetc(myFile);
142
143              CharToByte(data,&dataLen);
144
145              //一行的第、個字符表示數據存儲起始地址的高位
146
147              data[0= fgetc(myFile);
148
149              data[1= fgetc(myFile);
150
151              CharToByte(data,&adressHigh);
152
153              //一行的第、個字符表示數據存儲起始地址的低位
154
155              data[0= fgetc(myFile);
156
157              data[1= fgetc(myFile);
158
159              CharToByte(data,&adressLow);
160
161              //一行的第、個字符表示數據類型
162
163              data[0= fgetc(myFile);
164
165              data[1= fgetc(myFile);
166
167              CharToByte(data,&dataType);
168
169              //當數據類型為時,表示本行包含的是普通數據記錄
170
171              if (dataType == 0x00)
172
173              {
174
175                   for (i=0;i<dataLen;i++)
176
177                   {
178
179                       data[0= fgetc(myFile);
180
181                       data[1= fgetc(myFile);
182
183                       CharToByte(data,&byteData);
184
185                       outBuf[adressHigh*256+adressLow+i] = byteData;
186
187                   }

188
189                   totalLen += dataLen;
190
191              }

192
193              //當數據類型為時,表示到了最后一行
194
195              if (dataType == 0x01)
196
197              {
198
199                   printf("文件結束記錄!");
200
201              }

202
203              //當數據類型為時,表示本行包含的是擴展段地址記錄
204
205              if (dataType == 0x02)
206
207              {
208
209                   printf("不支持擴展段地址記錄!");
210
211                   return 0;
212
213              }

214
215              //當數據類型為時,表示本行包含的是擴展線性地址記錄
216
217              if (dataType == 0x04)
218
219              {
220
221                   printf("不支持擴展線性地址記錄!");
222
223                   return 0;
224
225              }

226
227         }

228
229     }

230
231     fclose(myFile);
232
233     printf("請輸入保存的BIN格式文件名:");
234
235     scanf_s("%s",fileName);
236
237     if (fopen_s(&myFile,fileName,"w"!= 0)
238
239     {
240
241         printf("打開文件%s失敗!",fileName);
242
243     }

244
245     for (i=0;i<totalLen;i++)
246
247     {
248
249         fputc(outBuf[i],myFile);
250
251     }

252
253     return 0;
254
255}

256

posted on 2007-12-21 17:15 isabc 閱讀(5149) 評論(1)  編輯 收藏 引用 所屬分類: C++基礎

評論

# re: hex格式介紹及轉bin格式的源程序 2012-12-13 14:42

很好,不過程序上有一點問題
if (fopen_s(&myFile,fileName,"w") != 0)
改成
if (fopen_s(&myFile,fileName,"wb") != 0)
我用bcb轉不行,用vs還是不行.  回復  更多評論   

廣告信息(免費廣告聯系)

中文版MSDN:
歡迎體驗

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精品一区二区三区| av成人免费在线观看| 久久九九精品99国产精品| 亚洲欧美激情视频在线观看一区二区三区 | 国产精品美女午夜av| 欧美久久电影| 欧美日韩国产一区二区| 欧美屁股在线| 国产精品视频999| 韩日欧美一区二区| 亚洲精品国产精品乱码不99按摩| 日韩天天综合| 亚洲自拍16p| 久久国产天堂福利天堂| 开心色5月久久精品| 国产精品美女黄网| 国产精品最新自拍| 亚洲春色另类小说| 日韩午夜精品视频| 久久精品道一区二区三区| 亚洲国产天堂久久综合| 亚洲大片免费看| 亚洲欧美资源在线| 欧美激情精品久久久久久| 亚洲精品资源| 久久精品91久久香蕉加勒比| 欧美日韩免费一区二区三区视频 | 欧美性猛交xxxx乱大交退制版| 国产精品视频久久| 亚洲欧洲精品天堂一级| 午夜精品免费在线| 最新69国产成人精品视频免费| 亚洲国产影院| 久久久国产精品一区二区中文| 欧美高清免费| 欧美大片一区二区三区| 日韩一级大片| 99香蕉国产精品偷在线观看| 欧美影院在线| 国产欧美日韩视频在线观看 | 在线观看三级视频欧美| 亚洲自拍偷拍网址| 亚洲黄色成人| 久久综合99re88久久爱| 国产伦精品一区二区三区| 99国内精品久久| 欧美成人在线网站| 久久久国产精品一区| 国产视频在线一区二区| 亚洲欧美日韩国产成人| 亚洲三级视频| 欧美激情综合在线| 亚洲美女av电影| 亚洲日本电影在线| 欧美日韩精品二区| 亚洲午夜极品| 亚洲一二三四久久| 国产欧美一区二区在线观看| 亚洲免费在线观看| 亚洲一区综合| 国产一区二区高清不卡| 久久国产夜色精品鲁鲁99| 久久精品人人做人人综合| 韩国女主播一区| 美女国产精品| 免费成人激情视频| 亚洲激情国产| 亚洲国产精品久久久久久女王| 久久综合久久久| 亚洲人成高清| 日韩午夜免费| 国产精品丝袜白浆摸在线| 欧美自拍偷拍午夜视频| 夜久久久久久| 亚洲精品女人| 欧美日韩国产首页在线观看| 亚洲在线电影| 欧美亚洲视频在线观看| 在线日韩av| 亚洲美女区一区| 国产欧美精品xxxx另类| 免费91麻豆精品国产自产在线观看| 老**午夜毛片一区二区三区| 亚洲裸体俱乐部裸体舞表演av| 亚洲伦理一区| 欧美体内she精视频在线观看| 亚洲一区日韩| 久久深夜福利| 亚洲欧美中文日韩v在线观看| 亚洲欧美日韩在线高清直播| 好吊色欧美一区二区三区四区 | 欧美日韩一区二区视频在线观看| 日韩一区二区精品葵司在线| 欧美精品日韩三级| 日韩一级欧洲| 午夜免费电影一区在线观看| 在线成人h网| 一区二区三区国产精华| 韩日欧美一区二区| 99热在线精品观看| 在线电影国产精品| 亚洲午夜精品视频| 日韩一级成人av| 久久国产精品久久久久久| 夜夜狂射影院欧美极品| 久久久综合精品| 欧美亚洲系列| 欧美日韩一区二区免费视频| 欧美成人伊人久久综合网| 国产一区二区久久久| 一区二区三区欧美| 99精品国产福利在线观看免费| 欧美自拍丝袜亚洲| 午夜精品偷拍| 国产精品v亚洲精品v日韩精品| 欧美成人中文字幕| 精品91视频| 性视频1819p久久| 亚洲在线一区| 欧美视频在线观看一区| 亚洲国产精品精华液2区45| 国产综合视频| 香蕉久久a毛片| 欧美人与禽性xxxxx杂性| 欧美在线你懂的| 在线成人av网站| 先锋影音久久久| 亚洲无限av看| 欧美激情1区| 亚洲高清久久网| 亚洲欧洲三级| 欧美成人一二三| 欧美国产激情二区三区| 激情一区二区三区| 久久精品国产99国产精品| 欧美激情中文字幕一区二区 | 久久一二三四| 久久九九热re6这里有精品| 国产麻豆综合| 亚洲欧美在线另类| 久久成人18免费网站| 国产精品久久久久9999吃药| 一本大道久久精品懂色aⅴ| 亚洲午夜小视频| 国产精品黄色在线观看| 国产精品99久久99久久久二8 | 亚洲第一福利在线观看| 亚洲电影免费观看高清完整版在线观看 | 亚洲欧美日韩在线高清直播| 午夜精品久久久久久久99黑人| 欧美午夜寂寞影院| 在线亚洲精品| 久久久国产精品一区二区中文 | 欧美精品尤物在线| 一本色道久久综合亚洲精品小说| 亚洲一区二区三区四区在线观看| 国产精品地址| 久久精品天堂| 一区二区三区视频在线观看| 91久久夜色精品国产九色| 亚洲色图在线视频| 猫咪成人在线观看| 久久婷婷国产综合精品青草| 久久久av网站| 在线观看一区欧美| 欧美经典一区二区| 亚洲一区激情| 免费中文日韩| 亚洲免费一级电影| 亚洲国产精品va在看黑人| 欧美日韩亚洲一区三区 | 国产精品天天摸av网| 亚洲欧美一区二区原创| 欧美成年人视频网站欧美| 日韩一区二区精品在线观看| 国产精品久久久久久亚洲调教| 久久久久久久成人| 洋洋av久久久久久久一区| 久久久久久综合| 一区二区高清| 在线精品视频一区二区三四| 国产精品草莓在线免费观看| 久久久噜噜噜久久| 亚洲一区美女视频在线观看免费| 欧美v亚洲v综合ⅴ国产v| 午夜亚洲伦理| 亚洲日本一区二区| 国产一区视频在线观看免费| 欧美人成网站| 久久婷婷激情| 欧美在线一区二区| 一个色综合导航| 欧美国产精品一区| 久久男人资源视频| 欧美一区二区在线观看| 一区二区三区高清视频在线观看 | av不卡免费看| 亚洲国产成人在线| 免费成人高清| 亚洲麻豆av|