2008年12月8日 星期一

二進制存檔

好久沒有新增文章了,前一陣子渡過一段暗無天日的忙碌生活(瞎忙?),今天難得有時間好好的改一下擱置已久的問題,這次所遇到的是要把一個二進制的bin檔輸出成十六進制格式的文字檔案,這種格式就會像是我們用UltraEdit開啟檔案後再選擇十六進制的模式。這個小動作我想了很久,一值在找VC6是否有可以簡單完成的API,找了好久後我放棄了(應該是沒有),剛好翻了之前在大陸買的"Visual C++開發經驗技巧寶典",找到了一個類似的範例,解決了這次的問題 :)


DWORD filelen= 0, readlen= 0, pos = 0;
CString strbin;
BYTE buf[16];

CFile f;
f.Open("123.bin",CFile::modeRead);
filelen = f.GetLength();

FILE *fp;
fp=fopen("123.txt", "a");


while(1)
{
readlen = f.Read(buf,16);
CString strtemp;

for(int i = 0 ; i <16; i ++)
{
strtemp.Format("%02X",buf[i]);

if(i == 15)
fprintf(fp, "%s;\n", strtemp);
else
fprintf(fp, "%s ", strtemp);
}
pos+=readlen;

if(pos >= filelen)
break;
}

fclose(fp);


輸出的格式如下圖:

沒有留言: