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

山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版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>
            欧美成人一区二区| 亚洲人成网站777色婷婷| 亚洲国产精品黑人久久久| 欧美高清影院| 免费短视频成人日韩| 蜜臀a∨国产成人精品| 亚洲国产成人在线| 国产精品嫩草影院一区二区| 亚洲人成人77777线观看| 欧美午夜精品久久久久久超碰| 久久久久久69| 欧美日本一道本| 免费视频一区| 日韩一区二区精品视频| 免费视频久久| 久久久在线视频| 欧美日本高清| 欧美国产日韩在线| 夜夜嗨av色综合久久久综合网| 久久久久久9999| 欧美日韩一区二区三区在线视频| 亚洲巨乳在线| 一区二区三区精品| 欧美成人国产| 久久激情五月激情| 欧美成人精品1314www| 欧美一级视频免费在线观看| 欧美成人免费va影院高清| 最新中文字幕亚洲| 亚洲精品中文字| 亚洲第一毛片| 国产性天天综合网| 欧美日韩国产色视频| 欧美激情 亚洲a∨综合| 久久久久国产一区二区| 制服诱惑一区二区| 国产欧美亚洲一区| 国产精品日韩高清| 国产精品夜夜夜| 欧美一区二区日韩一区二区| 亚洲人成人77777线观看| 亚洲视频第一页| 国产欧美一区二区三区久久| 狂野欧美一区| 亚洲精品日韩激情在线电影| 欧美欧美在线| 久久九九99| 136国产福利精品导航网址应用| 亚洲高清在线视频| 一区二区不卡在线视频 午夜欧美不卡在 | 韩国一区电影| 亚洲免费伊人电影在线观看av| 亚洲自拍高清| 欧美在线观看天堂一区二区三区| 亚洲精品欧美激情| 在线日韩中文| 国产精品video| 亚洲欧美精品suv| 99ri日韩精品视频| 在线日韩欧美| 免费观看30秒视频久久| 久久久久久欧美| 久久久精品动漫| 午夜在线不卡| 欧美一区二区三区在线播放| 免费久久99精品国产| 一本色道久久综合亚洲精品按摩| 亚洲欧洲另类国产综合| 影音先锋亚洲视频| 久久av一区| 99精品久久| 国产精品一区二区男女羞羞无遮挡| 亚洲性人人天天夜夜摸| 亚洲电影免费观看高清完整版在线观看 | 久久深夜福利| 欧美成ee人免费视频| 国产亚洲精品久久久久久| 一本一本久久a久久精品综合妖精| 欧美日韩亚洲综合在线| 国产日韩一区二区三区在线播放| 国内免费精品永久在线视频| 国产人成一区二区三区影院| 国模精品一区二区三区色天香| 尤物精品国产第一福利三区| 一区二区三区日韩| 国产精品毛片大码女人| 在线亚洲欧美| 韩国av一区| 一本大道久久精品懂色aⅴ| 欧美福利小视频| 亚洲精品在线视频观看| av成人免费在线观看| 狠狠色丁香婷婷综合久久片| 精品成人在线| 国产午夜精品久久久久久免费视 | 亚洲欧洲日本mm| 亚洲美女视频在线观看| 亚洲一区二区三区欧美| 久久综合电影一区| 久久久久成人精品| 国产精品久久久久av| 欧美一区二区高清在线观看| 欧美va亚洲va国产综合| 日韩视频在线你懂得| 久久久亚洲午夜电影| 一区二区三区四区国产精品| 老牛影视一区二区三区| av不卡在线看| 亚洲欧美日韩国产另类专区| 激情久久久久| 国产精品久久二区| 一本色道久久综合一区 | 欧美一区二区三区免费视| 久久精品国产99国产精品澳门| 久久九九热re6这里有精品| 亚洲日韩欧美视频| 亚洲免费观看在线观看| 久久综合色婷婷| 亚洲毛片av在线| 老牛影视一区二区三区| 欧美午夜精品久久久久免费视| 原创国产精品91| 亚洲福利电影| 国产精品99久久久久久人| 欧美性理论片在线观看片免费| 亚洲午夜在线| 国产三级精品在线不卡| 亚洲精品资源| 一本久久综合亚洲鲁鲁| 午夜精品久久99蜜桃的功能介绍| 蜜臀久久久99精品久久久久久| 美女精品在线观看| 妖精成人www高清在线观看| 免费成人毛片| 欧美三区美女| 久久国产色av| 欧美午夜视频| …久久精品99久久香蕉国产| 国产精品日韩欧美一区二区三区| 欧美一区二区| 亚洲欧美成人| 国产午夜久久久久| 亚洲黄色免费| 在线看国产一区| 欧美国产视频在线观看| 国产欧美 在线欧美| 久久精品在线| 亚洲天堂网在线观看| 一区二区三区在线观看国产| 欧美日韩精品在线视频| 欧美a级片一区| 欧美电影免费观看网站| 国产真实乱偷精品视频免| 欧美成人精品一区二区| 麻豆九一精品爱看视频在线观看免费| 国产精品99久久久久久www| 久久精品日产第一区二区三区| 欧美屁股在线| 一区二区三区欧美| 亚洲一线二线三线久久久| 亚洲精品在线三区| 亚洲第一页中文字幕| 午夜免费电影一区在线观看 | 91久久久亚洲精品| 一区二区三区在线观看视频| 性18欧美另类| 在线观看一区视频| 免费观看成人鲁鲁鲁鲁鲁视频| 午夜精品一区二区三区在线| 欧美日韩一区国产| 午夜激情一区| 亚洲一区尤物| 国产精品久久久久9999| 欧美激情性爽国产精品17p| 久久精品国产亚洲5555| 亚洲欧美在线一区| 一区二区三区久久| 国产精品亚洲片夜色在线| 欧美日韩欧美一区二区| 久久久久久久激情视频| 国产精品久久久久久妇女6080| 美国成人直播| 欧美成人性生活| 亚洲欧美韩国| 国产久一道中文一区| 欧美高清视频在线观看| 国产一区91精品张津瑜| 中日韩视频在线观看| 欧美中在线观看| 国产免费成人在线视频| 亚洲成色777777在线观看影院| 免费亚洲一区二区| 久久免费高清视频| 日韩亚洲欧美精品| 嫩草伊人久久精品少妇av杨幂| 欧美专区亚洲专区| 狠狠色综合一区二区| 亚洲女爱视频在线| 久久久不卡网国产精品一区| 久久综合狠狠综合久久综合88 |