有關binary檔的讀寫問題 |
答題得分者是:brook
|
hjlin
一般會員 發表:63 回覆:48 積分:22 註冊:2003-02-11 發送簡訊給我 |
請教一下各位,我的目的是想從*.bin檔讀取byte值,然後合併成word值
例如 00 01 02 03 結果為 0001 0203 ...
以下程式要如何修改比較好?
void __fastcall TForm1::Button1Click(TObject *Sender) { TMemoryStream *TMS=new TMemoryStream(); char *pt; String i,buffer; if(OpenDialog1->Execute()) { TMS->LoadFromFile(OpenDialog1->FileName); } pt=(BYTE *)TMS->Memory; i=pt; buffer = i; for (int i=0; i< 7; i ) { buffer=buffer *(pt ); Application->ProcessMessages(); } ShowMessage(buffer); delete TMS; } |
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
1.一般byte合併成word值,只要設一個word的指標,把指標指到byte的地方就可以了.
例: WORD *p = (WORD*)pt; 2.你的程式是把byte的值, 兩兩一組, 轉成AnsiString, 中間用空隔隔開,
試試:
void __fastcall TForm1::Button1Click(TObject *Sender) { TMemoryStream *TMS=new TMemoryStream(); char *pt; String i,buffer; if(OpenDialog1->Execute()) { TMS->LoadFromFile(OpenDialog1->FileName); } pt=(BYTE *)TMS->Memory; // i=pt; // buffer = i; AnsiString s; for (int i=0; i< 7; i++) { buffer=buffer+s.IntToHex(int(pt[2*i]),2)+s.IntToHex(int(pt[2*i+1]),2)+" "; Application->ProcessMessages(); } ShowMessage(buffer); delete TMS; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |