ASCII碼的問題 |
尚未結案
|
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
請教一下:
如果我在memo中輸出字元,如memo1->Text='A';它是顯示A沒錯
但如果我寫成memo1->Text=0x41;它卻會顯示65
目前問就是我有一字元陣列讀檔進來,要把他轉為字元(ASCII)輸出,
但為何都顯示十進制?我試了好久,請教大家我哪裡出了問題?
我有用toascii的C函示,但不行耶。
String s; s=toascii(0x41),它還是顯示65 >_<
unsigned char cc; cc=toascii(0x41),卻可以。
但是這筆字串最後要送到memo上去,卻又變成十進制,~嗚~嗚~怎麼一回事?
我是要做左邊顯示16進制,右邊是ASCII碼。
是否能請知道的人回覆一下,謝謝!!!
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請教一下: 如果我在memo中輸出字元,如memo1->Text='A';它是顯示A沒錯 但如果我寫成memo1->Text=0x41;它卻會顯示65 目前問就是我有一字元陣列讀檔進來,要把他轉為字元(ASCII)輸出, 但為何都顯示十進制?我試了好久,請教大家我哪裡出了問題? 我有用toascii的C函示,但不行耶。 String s; s=toascii(0x41),它還是顯示65 >_< unsigned char cc; cc=toascii(0x41),卻可以。 但是這筆字串最後要送到memo上去,卻又變成十進制,~嗚~嗚~怎麼一回事? 我是要做左邊顯示16進制,右邊是ASCII碼。 是否能請知道的人回覆一下,謝謝!!!frederick你好: 如何顯示十進制、十六進制呢?? 請參考以下的做法 < class="code"> char szBuf[8]={0}; char szA[2]="A"; sprintf(szBuf, "%d", szA[0]); Memo1->Lines->Add(szBuf); sprintf(szBuf, "X", szA[0]); Memo1->Lines->Add(szBuf); Memo1->Lines->Add(szA); -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2002/11/15 22:24:40
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不果我是想把字串先處理好,再顯示到memo 如果一字一字丟會很慢說,但會顯示ASCII code 如果一動到字串,就會發生轉換成數值的問題。 該怎麼處理才好呢?還是我哪些地方上概念不好,請多指教 謝謝!frederick你好: 請參考以下修改過的程式碼 < class="code"> char szBuf[3]={0}; char szStr[11]="ABCDEFGHIJ"; char szDec[21]={0}; char szHex[21]={0}; int nLen=strlen(szStr); int i=0; Memo1->Lines->Add(szStr); for(i=0; i
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
對於Data要呈現在畫面上, 以下是我慣用的方法
char Value='A';
String Str;
Str.sprintf("現在要秀十進制: %d, 再來秀出十六進制:%.2X, 最後把ASCII秀出來:%c", Value, Value, Value);
Memo1->Lines->Add(Str); 看得懂的話, 請舉一反三, 就可以秀出任何你想要秀的字串格式
看不種的話, 請先run看看, 多玩幾次就懂了... 發表人 - lcsboy 於 2002/11/16 21:02:21
|
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
請教大家一下,我有一小段程式碼:
iLine = 65536 / 16
for (i1 = 1; i1 <= iLine; i1 )
{
Application->ProcessMessages();
// show address
strShow = strShow IntToHex(iAddr, 4) " ";
iAddr = 16;
// show hex format
i2 = 1;
while (i2 <= 16)
{
if (iBufIndex < iCnt) {
strShow = strShow IntToHex(cBuf[iBufIndex], 2) " ";
iBufIndex; i2;
}
else {
strShow = strShow " "; // add three blank, my adjust
i2; iBlank;
}
}
// end of while()
~~~~~~~~~~中間略~~~~~~~~~~~~~~~~
strShow = strShow cAscShow '\r' '\n';
^^^^^^^^
放字元的字串
} // end of for()
frmMain->mnoCode->Lines->Add(strShow); ...這是我程式上的一個片段,顯示一行16進制碼,把char buffer[65536]內
先處理好成字串,再送出。結....結果竟然要等10幾秒它才會show出來,
怎麼一回事呢?for也才不過跑4096行而已(我的是PIII 1G)。
humm...只是覺得太奇怪一點,請教大家有什麼看法呢? 還有 iBufIndex一些變數有時數值會跑出很大的數值,
在strcat(cAscShow, cTmp)之後,有些只是for跑一次變數加一數值。
好奇怪喔~我用的是BCB6但有時很大數值把BCB關掉再重來又沒事了 @_@!!!
是BCB的問題呢?還是我的問題 >_<
|
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
|
ubong
一般會員 發表:2 回覆:42 積分:23 註冊:2002-10-02 發送簡訊給我 |
但如果我寫成memo1->Text=0x41;它卻會顯示65
----------------------------------------------------------------
看了各位的解答,實在有些畫蛇添足。我試了一下下述兩個方式皆可行:
1: char c=0x41;
memo1->Text=c;
2: memo1->Text=char (0x41); or memo1->Text=char (65);
---------------------------------------------------------------- ubong
------
ubong |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 剛才把程式化簡, 兩個for回圈,大回圈次數為65536/16 小回圈為16次 小回圈中只放字串相加,也不轉換了 也不顯示 只放了兩行顯示開始與結束 結果跑起來要40秒說 @_@!!! 有人能提供看法嗎?frederick你好: 65535*16 bytes=1048576 bytes=1024 KB=1 GB 結果只花了 40 秒~~我個人覺得算很快了 不然~~你可以試著做一個 > 通常~~資料量很大的時候 程式設計的策略~~就必須做出抉擇 如果沒有這個必要的話 在同一個時間之內~~只需要 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao 您好: 我想大概是我方法上有些問題,也就是每show一次我都重新計算一次。 hummm....我真的有去用UltraEdit開300M的ZIP檔,結果你猜要幾秒? >,但如用 > 我的 > >>< face="Verdana, Arial, Helvetica"> frederick你好: 其實很多要同時處理大量資料的應用程式 都是使用動態載入的設計方式 以避免使用過多的系統資源 連 winzip 也是這樣設計的 如果最後壓縮的結果~~會是一個很大的檔案的話 或者是要解開的壓縮檔案~~是一個很大的檔案的話 winzip 會先嘗試去切割 把它變成很多較小的 temp file 然後動態載入至記憶進一步處理 也就是說~~在同一個時間之內 耗損系統的記憶體並不會太多 等到所有的資料都處理完畢後 再把每一塊資料組合起來~~就是最後的結果了 --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
[/quote]
frederick你好:
其實很多要同時處理大量資料的應用程式
都是使用動態載入的設計方式
以避免使用過多的系統資源
連 winzip 也是這樣設計的
如果最後壓縮的結果~~會是一個很大的檔案的話
或者是要解開的壓縮檔案~~是一個很大的檔案的話
winzip 會先嘗試去切割
把它變成很多較小的 temp file
然後動態載入至記憶進一步處理
也就是說~~在同一個時間之內
耗損系統的記憶體並不會太多
等到所有的資料都處理完畢後
再把每一塊資料組合起來~~就是最後的結果了 --
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 嗨RaynorPao~請問一下: 您所謂的動態載入是什麼意思呢? 是不是檔案先放在磁碟中,需要時在讀進來, 而不要一次全讀入記憶體? 還是用類似資料結構中的鍵節串列的概念呢?frederick你好: 的確~~類似像你說的方式< > 至於資料結構方面 並沒有一定可以遵循的方式 而是看你自己本身設計應用程式 的需求及策略而定 只要能夠達到目的 又不會發生問題的方法 都是好方法< > -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |