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

山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版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 閱讀(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>
            亚洲第一网站免费视频| 欧美精品久久一区二区| 夜夜嗨av一区二区三区免费区 | 亚洲欧美日韩专区| 亚洲免费中文| 欧美xxx成人| 免费观看30秒视频久久| 国产精品永久在线| 中文精品在线| 在线一区欧美| 欧美精品久久久久久久久久| 免费观看成人| 伊人成人在线| 久久资源av| 美女精品国产| 精品白丝av| 久久久久国产精品午夜一区| 国产自产在线视频一区| 亚洲一区二区日本| 亚洲一区二区黄| 国产精品红桃| 亚洲在线观看视频网站| 亚洲欧美国产日韩中文字幕| 欧美三级网址| 美女网站久久| 亚洲国产高清在线| 美女精品在线观看| 欧美v亚洲v综合ⅴ国产v| 在线不卡免费欧美| 欧美 日韩 国产精品免费观看| 欧美.www| 99精品视频一区二区三区| 欧美激情免费观看| 日韩视频永久免费观看| 亚洲在线视频| 国产欧美一区二区精品秋霞影院| 午夜久久影院| 欧美va亚洲va日韩∨a综合色| 亚洲国产午夜| 欧美日韩精品免费| 亚洲小说春色综合另类电影| 在线欧美日韩| 欧美—级a级欧美特级ar全黄| 99在线精品视频| 欧美在线亚洲一区| 亚洲高清在线观看一区| 欧美激情一区二区三区不卡| 中文精品视频| 欧美1区免费| 亚洲小说春色综合另类电影| 国产噜噜噜噜噜久久久久久久久| 久久久久免费视频| 亚洲国产成人不卡| 亚洲欧美一级二级三级| 亚洲一区二区免费在线| 欧美一区二区视频在线观看| 国产日韩视频| 开元免费观看欧美电视剧网站| 亚洲国产美女| 久久国产一区二区| 最新日韩在线视频| 国产精品一区二区三区乱码| 久久亚洲国产精品日日av夜夜| 亚洲欧洲美洲综合色网| 久久狠狠一本精品综合网| 91久久精品国产91久久| 国产精品嫩草影院av蜜臀| 久久亚洲精品中文字幕冲田杏梨| 日韩写真视频在线观看| 快播亚洲色图| 午夜精品久久久久久久99水蜜桃| 亚洲第一精品夜夜躁人人爽 | 欧美午夜寂寞影院| 久久久久久自在自线| 一区二区三区欧美成人| 亚洲第一页在线| 久久成人18免费观看| 99精品欧美一区| 亚洲国产精品传媒在线观看| 国产伦一区二区三区色一情| 欧美精品在线免费播放| 久久精品国产亚洲高清剧情介绍| 一区二区久久久久| 欧美激情中文字幕乱码免费| 久久久久.com| 欧美亚洲三区| 亚洲欧美一区二区三区在线| 99综合在线| 亚洲人在线视频| 亚洲福利国产| 伊人久久大香线| 韩国欧美一区| 国产自产在线视频一区| 国产欧美日本在线| 国产精品推荐精品| 欧美午夜一区二区| 欧美日韩精品| 欧美日韩色综合| 欧美日韩国产综合久久| 欧美精品电影| 欧美日韩在线亚洲一区蜜芽| 欧美精品久久天天躁| 欧美精品免费视频| 欧美日本在线| 欧美三级电影大全| 欧美日韩影院| 国产精品第一区| 国产美女精品一区二区三区| 国产日本欧美一区二区| 国产欧美日韩一区二区三区在线观看 | 国产一区二区三区在线观看视频 | 欧美婷婷久久| 欧美性片在线观看| 国产精品一区免费观看| 国产嫩草一区二区三区在线观看| 国产精品亚洲片夜色在线| 国产精品日韩专区| 国产视频一区在线| 一区在线电影| 日韩亚洲欧美精品| 亚洲天堂免费在线观看视频| 午夜精品亚洲| 美女免费视频一区| 亚洲国产成人精品女人久久久 | 99re6这里只有精品| 亚洲一区二区三区免费观看| 亚洲欧美日韩天堂| 久久久久国产精品厨房| 男女激情视频一区| 亚洲欧洲日夜超级视频| 亚洲视频axxx| 久久久久国产一区二区三区| 欧美成人性生活| 国产精品乱看| 亚洲国产国产亚洲一二三| aa亚洲婷婷| 久久米奇亚洲| av72成人在线| 久久久噜噜噜久久| 欧美日韩国产免费观看| 国产日韩欧美精品在线| 亚洲激情啪啪| 欧美专区亚洲专区| 亚洲国产日本| 欧美一级片在线播放| 欧美精品尤物在线| 国内精品久久久久久| 一本久久a久久精品亚洲| 欧美在线视频在线播放完整版免费观看| 免费试看一区| 亚洲综合欧美| 欧美日韩亚洲国产一区| 黄色国产精品一区二区三区| 一区二区三区四区五区视频| 老**午夜毛片一区二区三区| 亚洲最新在线视频| 免费亚洲电影在线| 国产色视频一区| 亚洲视频免费在线观看| 欧美激情导航| 欧美在线观看一区| 国产精品vip| 夜夜嗨av一区二区三区免费区| 久久先锋影音| 亚洲一区精品视频| 欧美日韩国产二区| 亚洲韩国日本中文字幕| 久久精品亚洲热| 亚洲欧美日韩爽爽影院| 欧美日韩在线视频观看| 亚洲精选中文字幕| 欧美成人伊人久久综合网| 欧美在线播放| 国产日韩一区二区三区在线播放| 一区二区三区日韩欧美| 欧美韩日一区二区| 久久久国产91| 国模精品一区二区三区| 亚洲男人的天堂在线| 亚洲精品中文字幕在线观看| 蜜臀av一级做a爰片久久 | 亚洲午夜伦理| 亚洲美女视频网| 欧美福利一区二区| 亚洲日本欧美日韩高观看| 你懂的国产精品| 久久综合激情| 1024成人| 欧美成人小视频| 免费成人av| 99re6热在线精品视频播放速度| 欧美激情一区三区| 欧美多人爱爱视频网站| 最新亚洲激情| 亚洲日本欧美日韩高观看| 欧美日韩天天操| 亚洲欧美久久久| 欧美一区二区视频在线观看| 国产喷白浆一区二区三区| 久久久久久黄|