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

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

Blog @ Blog

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

常用鏈接

統計

積分與排名

BBS

Blog

Web

最新評論

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

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

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

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

:10000000FF0462FF051EFF0A93FF0572FF0A93FFBC

       “:”表示一行的開始。

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

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

       7,8個字符“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 閱讀(5151) 評論(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>
            亚洲免费黄色| 亚洲天堂免费在线观看视频| 欧美午夜精彩| 亚洲第一区在线观看| 国产伦精品一区二区三区视频黑人| 欧美成人第一页| 国产一区二区三区四区| 一区二区三区视频在线观看 | 欧美视频一区二区三区四区| 麻豆国产精品一区二区三区| 国产日韩综合| 亚洲主播在线| 欧美一级理论性理论a| 欧美日韩在线观看一区二区| 亚洲国产精品久久久久久女王| 精品不卡一区二区三区| 久久精品av麻豆的观看方式| 性欧美精品高清| 国产精品拍天天在线| 日韩视频在线观看免费| 一本色道久久综合亚洲精品按摩| 欧美电影免费观看高清完整版| 欧美成人小视频| 亚洲国产一区二区视频| 欧美aaaaaaaa牛牛影院| 亚洲国产日韩在线| 一区二区高清在线| 欧美日韩视频第一区| 一本色道88久久加勒比精品| 中文日韩在线| 国产老肥熟一区二区三区| 午夜精品视频在线观看一区二区| 欧美在线播放一区| 国产自产精品| 美腿丝袜亚洲色图| 亚洲国产精品毛片| 亚洲影院色在线观看免费| 国产精品一区二区你懂得 | 欧美xxxx在线观看| 亚洲黄色高清| 亚洲午夜一区二区| 国产日韩精品在线| 久久在线视频| 日韩视频一区二区三区在线播放免费观看| 亚洲无线视频| 国产午夜精品视频| 蜜臀91精品一区二区三区| 亚洲美女av电影| 午夜一区二区三视频在线观看| 国产日韩精品久久| 免费成人美女女| 99国产精品久久久久久久久久| 欧美一区二区三区在线观看| 黑人操亚洲美女惩罚| 欧美jizz19性欧美| 亚洲小视频在线| 欧美成人一区二区| 午夜精品一区二区三区在线播放| 国户精品久久久久久久久久久不卡| 玖玖精品视频| 亚洲在线视频免费观看| 欧美成在线视频| 亚洲一区二区网站| 在线不卡中文字幕播放| 欧美亚州在线观看| 久久综合九色综合欧美就去吻| 99精品久久久| 欧美成在线观看| 欧美一区二区三区免费观看视频| 亚洲国产精品一区二区www| 国产精品电影网站| 美女精品在线| 亚洲欧美色婷婷| 日韩午夜一区| 亚洲国产精品一区二区尤物区 | 久久日韩精品| 亚洲午夜精品久久| 亚洲缚视频在线观看| 国产精品人成在线观看免费| 欧美福利专区| 久久午夜影视| 欧美一区二区黄色| 一本色道久久综合亚洲精品不| 欧美国产第一页| 久久综合伊人77777| 欧美一区2区三区4区公司二百| 99re这里只有精品6| 亚洲福利在线观看| 伊人影院久久| 一区二区三区在线视频播放| 国产日韩欧美不卡| 国产欧美视频一区二区| 欧美视频在线观看免费| 欧美激情在线播放| 蜜桃久久av一区| 麻豆精品视频| 久久影院午夜论| 久久亚洲视频| 久久久久久网站| 久久久精品动漫| 欧美一区日韩一区| 欧美中文在线视频| 欧美亚洲日本网站| 欧美尤物一区| 久久国产精品99国产精| 久久精品国产亚洲a| 久久久国产精品亚洲一区| 欧美一区免费| 久久久久一区| 男女精品网站| 欧美成人自拍视频| 欧美理论电影在线播放| 欧美四级伦理在线| 国产精品一区二区欧美| 国产日韩欧美综合精品| 国产欧美婷婷中文| 黄色精品在线看| 亚洲国内在线| 一区二区毛片| 午夜一区在线| 久久久久久9| 欧美国产欧美亚洲国产日韩mv天天看完整 | 99精品视频免费在线观看| 在线午夜精品自拍| 亚洲欧美日韩综合一区| 久久精品国产免费观看| 蜜臀a∨国产成人精品| 欧美日韩国产a| 国产精品国产三级国产aⅴ9色| 国产日产欧美一区| 亚洲电影第三页| 日韩视频在线一区| 午夜久久电影网| 免费在线观看一区二区| 亚洲人在线视频| 亚洲欧美日韩综合国产aⅴ| 久久精品视频一| 欧美日韩国产色站一区二区三区| 国产精品激情电影| 一区福利视频| 亚洲私拍自拍| 老司机免费视频一区二区三区| 亚洲欧洲精品一区| 香蕉精品999视频一区二区| 鲁大师成人一区二区三区| 国产精品高潮呻吟久久av无限| 狠狠干成人综合网| 正在播放欧美视频| 免费日韩视频| 一区二区三区三区在线| 久久资源在线| 国产精品萝li| 日韩亚洲欧美高清| 久久影视三级福利片| 99视频精品免费观看| 久久久亚洲成人| 国产欧美日韩一级| 一区二区国产在线观看| 久久中文精品| 亚洲一线二线三线久久久| 欧美88av| 黄色日韩网站| 欧美综合国产精品久久丁香| 91久久黄色| 久久亚洲国产精品日日av夜夜| 国产精品性做久久久久久| 亚洲品质自拍| 蜜乳av另类精品一区二区| 亚洲综合精品一区二区| 欧美精品1区2区| 在线日韩中文字幕| 久久久欧美一区二区| 亚洲欧美一区二区视频| 欧美三日本三级少妇三2023| 91久久久在线| 乱码第一页成人| 欧美一区久久| 国产亚洲毛片| 欧美专区在线观看一区| 亚洲欧美国产精品专区久久| 欧美精选一区| 日韩亚洲欧美精品| 亚洲国产精品悠悠久久琪琪| 久久天天躁狠狠躁夜夜av| 国产一区二区高清| 久久久噜噜噜久噜久久 | 欧美一区二区三区四区在线 | 欧美插天视频在线播放| 欧美一二三视频| 国产精一区二区三区| 亚洲欧美日韩中文视频| 亚洲视频你懂的| 国产美女一区| 久久久久久久久久久久久久一区| 欧美一区三区二区在线观看| 国内精品久久久久影院优| 久久综合九色综合网站| 久久人人97超碰国产公开结果| 精品va天堂亚洲国产| 欧美电影在线观看完整版|