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

山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版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精品福利视频| 亚洲无线视频| 久久久综合激的五月天| 欧美激情按摩在线| 国产精品免费一区二区三区在线观看 | 欧美精品免费观看二区| 欧美精品一区二区三区高清aⅴ| 欧美日韩精品一区视频| 国产精品国产三级欧美二区 | 亚洲高清激情| 亚洲少妇自拍| 蜜臀va亚洲va欧美va天堂| 亚洲国内精品在线| 亚洲免费在线观看视频| 麻豆freexxxx性91精品| 国产精品高潮呻吟| 亚洲精品免费网站| 久久不射网站| 亚洲老板91色精品久久| 久久久久久久精| 欧美系列亚洲系列| 亚洲日本中文字幕免费在线不卡| 亚洲欧美综合v| 欧美国产日韩一二三区| 午夜视频在线观看一区二区| 欧美成年人视频网站| 国产日韩欧美一区| 亚洲自拍高清| 亚洲人体一区| 老色鬼久久亚洲一区二区| 国产精品视频xxxx| 亚洲一区免费视频| 99精品国产一区二区青青牛奶| 久久蜜桃资源一区二区老牛| 国产精品亚洲激情| 亚洲午夜一区| 亚洲日本在线观看| 欧美aⅴ一区二区三区视频| 激情综合久久| 裸体素人女欧美日韩| 性欧美1819sex性高清| 欧美日韩中文字幕日韩欧美| 亚洲精品一区二区三区99| 欧美+日本+国产+在线a∨观看| 亚洲欧美日韩中文播放| 国产精品久久久久久久9999| 这里只有精品视频| 日韩视频免费| 欧美理论大片| 亚洲免费大片| 亚洲美女网站| 国产精品福利在线观看网址| 亚洲免费视频在线观看| 一本色道久久综合狠狠躁的推荐| 欧美日韩第一区| 一区二区三区日韩| 在线亚洲激情| 国产伦精品一区二区三区高清版| 亚洲综合清纯丝袜自拍| 亚洲一本大道在线| 国产精品手机在线| 久久久久久久一区二区三区| 久久精品视频一| 亚洲全部视频| 亚洲三级色网| 欧美日韩小视频| 亚洲免费视频一区二区| 亚洲欧美日韩综合| 在线观看日韩专区| 亚洲人成77777在线观看网| 欧美视频在线观看免费网址| 亚洲综合色噜噜狠狠| 亚洲一区制服诱惑| 激情国产一区二区| 最新成人在线| 国产免费成人av| 欧美在线日韩精品| 亚洲视频精品| 激情久久久久久| 亚洲国产精品一区二区www在线| 欧美激情一区二区| 欧美亚洲在线观看| 美女任你摸久久| 亚洲一区欧美| 久久裸体视频| 亚洲一区二区三区久久| 久久精品二区亚洲w码| 亚洲视频一区在线| 久久久国产一区二区| 正在播放日韩| 久久久美女艺术照精彩视频福利播放| 亚洲国内自拍| 亚洲欧美日韩天堂| 99re亚洲国产精品| 久久久久久**毛片大全| 亚洲一区二区在线免费观看| 久久综合久久综合九色| 欧美中文字幕第一页| 欧美日韩少妇| 亚洲高清视频一区| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲国产精品电影在线观看| 国产日韩欧美高清| 一区二区三区视频在线看| 亚洲丁香婷深爱综合| 午夜综合激情| 欧美一级成年大片在线观看| 欧美激情国产精品| 欧美激情一区二区三区在线视频| 国产欧美一区二区精品性色| 一本大道久久a久久精二百| 91久久久亚洲精品| 久久综合久久综合久久综合| 久久精品人人| 国产精品揄拍500视频| 99视频精品全部免费在线| 亚洲精品日韩在线观看| 欧美91视频| 亚洲激情图片小说视频| 亚洲欧洲美洲综合色网| 久久久久久久久久久一区| 久久精品成人一区二区三区| 国产精品一卡| 亚洲性人人天天夜夜摸| 欧美一级片在线播放| 国产精品卡一卡二| 亚洲欧美精品suv| 欧美一级在线视频| 国产精品亚洲欧美| 性做久久久久久久免费看| 久久国产成人| 国内伊人久久久久久网站视频| 欧美一级专区免费大片| 久久噜噜噜精品国产亚洲综合| 国产日韩欧美日韩| 久久精品人人爽| 免费欧美在线| 亚洲国产乱码最新视频| 欧美xxx成人| 99精品视频免费观看视频| 亚洲综合日韩中文字幕v在线| 国产精品一级| 久久久亚洲成人| 亚洲国产欧美在线人成| 夜夜夜精品看看| 欧美性事免费在线观看| 西瓜成人精品人成网站| 美女视频黄 久久| 亚洲人成亚洲人成在线观看| 欧美日韩国产精品自在自线| 亚洲一区在线播放| 老司机成人网| 一区二区三区|亚洲午夜| 国产精品色午夜在线观看| 久久久久综合| 亚洲麻豆一区| 久久综合色8888| 99精品99久久久久久宅男| 国产精品免费网站在线观看| 久久午夜av| 亚洲天堂偷拍| 欧美大色视频| 欧美伊人精品成人久久综合97| 在线观看的日韩av| 欧美性理论片在线观看片免费| 午夜亚洲激情| 亚洲国产精品一区二区www在线 | 99国产精品99久久久久久粉嫩| 国产精品麻豆成人av电影艾秋 | 亚洲国产电影| 久久国产精品一区二区三区四区| 亚洲精品久久久蜜桃 | 国产日韩在线视频| 欧美日本不卡| 久久精品国产第一区二区三区| 亚洲精品护士| 免费不卡视频| 欧美一区二区日韩一区二区| 亚洲精品美女在线| 黑人中文字幕一区二区三区 | 亚洲国产精品传媒在线观看| 国产精品乱看| 欧美大片在线观看一区二区| 午夜精品久久99蜜桃的功能介绍| 亚洲国产日韩在线| 蜜臀av在线播放一区二区三区 | 久久精视频免费在线久久完整在线看| 亚洲美女中文字幕| 亚洲第一在线视频| 国产一区日韩欧美| 国产精品乱码人人做人人爱| 欧美日本一区|