全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1415
推到 Plurk!
推到 Facebook!

請問ASC轉成Byte的問題

答題得分者是:RaynorPao
aredfish
一般會員


發表:47
回覆:41
積分:17
註冊:2002-12-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-06 14:04:24 IP:210.241.xxx.xxx 未訂閱
大家好: 我用fgetc從檔案中讀出一個一個的ASC值出來,可是我想得到的是 原本的Byte值而不是ASC的值, 例如我的檔案中裡面的內容為1234567890 那麼我收到的會是4950515253....48, 那麼我要怎麼轉才能得到12 34 56 78 90 兩個兩個一組的位元值...謝謝大家!!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-06 14:22:11 IP:203.73.xxx.xxx 未訂閱
引言: 大家好: 我用fgetc從檔案中讀出一個一個的ASC值出來,可是我想得到的是 原本的Byte值而不是ASC的值, 例如我的檔案中裡面的內容為1234567890 那麼我收到的會是4950515253....48, 那麼我要怎麼轉才能得到12 34 56 78 90 兩個兩個一組的位元值...謝謝大家!!
aredfish 你好: 請參考以下的範例程式碼 < class="code"> Memo1->Clear(); TStringList *sl7=new TStringList; TStringList *sl8=new TStringList; sl7->LoadFromFile("7.txt"); for(int i=0; iCount; i ) { AnsiString sz=""; for(int j=0; jStrings[i].Length()/2; j ) { sz=sz sl7->Strings[i].SubString(j*2 1, 2) " "; } Memo1->Lines->Add(sz); sl8->Add(sz); } sl8->SaveToFile("8.txt"); delete sl8; delete sl7; -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
aredfish
一般會員


發表:47
回覆:41
積分:17
註冊:2002-12-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-06 16:36:40 IP:210.241.xxx.xxx 未訂閱
RaynorPao大大: 非常感謝您的回信,您的方法應該是先將檔案轉成字串型態 再分批重新定位, 不過我想再請問一下,如果我先得到ASC的數碼,然後有沒有辦法再將他轉成HexFile, 我下面有一個code它可以得到對應的Hex數碼,但是我看 不太懂, int GetHexChar(int ch) 傳入一個我從檔案裡面所得到的ASC碼 { if (!isxdigit(ch)) return -1; if (isdigit(ch)) return ch - '0'; else return toupper(ch) - 'A' 10; } 假設我傳入49d,那會傳出1 可是我不懂他在寫什麼,BCB怎麼認得出來10進位或16進位
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-06 16:59:10 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao大大: 非常感謝您的回信,您的方法應該是先將檔案轉成字串型態 再分批重新定位, 不過我想再請問一下,如果我先得到ASC的數碼,然後有沒有辦法再將他轉成HexFile, 我下面有一個code它可以得到對應的Hex數碼,但是我看 不太懂, int GetHexChar(int ch) 傳入一個我從檔案裡面所得到的ASC碼 { if (!isxdigit(ch)) return -1; if (isdigit(ch)) return ch - '0'; else return toupper(ch) - 'A' 10; } 假設我傳入49d,那會傳出1 可是我不懂他在寫什麼,BCB怎麼認得出來10進位或16進位
aredfish 你好: 請問?? 你說的是不是這個樣子??
   AnsiString sz="F";
   int i=StrToInt("0x" sz);
   ShowMessage(i);
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
aredfish
一般會員


發表:47
回覆:41
積分:17
註冊:2002-12-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-06 17:16:13 IP:61.218.xxx.xxx 未訂閱
哎呀!! (跌倒!!) 這麼簡單我怎麼沒想到啊...謝謝您囉!!    想再請問您一個問題,若是由Console模式所建立的專案,那麼BCB是不是就沒 辦法使用ShowMessage或AnsiString等等東西,因為我現在這一個專案就是用 Dos去跑的,如果我在程式裡面加上ShowMessage或AnsiString等東西的話, 就會出現錯誤的訊息告訴我這東西是先沒有經過定義...謝謝大家!!    [/quote] aredfish 你好: 請問?? 你說的是不是這個樣子??
   AnsiString sz="F";
   int i=StrToInt("0x" sz);
   ShowMessage(i);
-- Enjoy Researching & Developing -- [/quote]
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-06 17:20:16 IP:203.73.xxx.xxx 未訂閱
引言: 哎呀!! (跌倒!!) 這麼簡單我怎麼沒想到啊...謝謝您囉!! 想再請問您一個問題,若是由Console模式所建立的專案,那麼BCB是不是就沒 辦法使用ShowMessage或AnsiString等等東西,因為我現在這一個專案就是用 Dos去跑的,如果我在程式裡面加上ShowMessage或AnsiString等東西的話, 就會出現錯誤的訊息告訴我這東西是先沒有經過定義...謝謝大家!!
aredfish 你好: 試試看 #include "vcl.h" 可不可以呢?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
aredfish
一般會員


發表:47
回覆:41
積分:17
註冊:2002-12-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-07 08:34:06 IP:210.241.xxx.xxx 未訂閱
 也不行耶!! Compiler會停在vcl.h這一行宣告上面...                                                    非常謝謝您的回覆    
引言: aredfish 你好: 試試看 #include "vcl.h" 可不可以呢?? -- >< face="Verdana, Arial, Helvetica">
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-07 08:41:37 IP:203.73.xxx.xxx 未訂閱
引言: 也不行耶!! Compiler會停在vcl.h這一行宣告上面... 非常謝謝您的回覆
aredfish 你好:
請問?? 你之前是如何建立一個 Console Application 的呢??
(1)在 BCB 中按「File/New/Other」啟動「New Items」Dialog
(2)在「New」Tab 裡面選擇「Console Wizard」啟動「Console Wizard」Dialog
(3)確認「C  」「Use VCL」「Console Application」這三個選項有被選擇
(4)最後按「OK」建立 Console Application,然後加入以下的程式碼
int main(int argc, char* argv[])
{
   AnsiString sz="Hello";
   ShowMessage(sz);
   return 0;
}
(5)試著編譯並執行看看 (小弟我在 BCB 6.0 試過是沒有問題的喔)
    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
aredfish
一般會員


發表:47
回覆:41
積分:17
註冊:2002-12-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-07 10:21:00 IP:61.218.xxx.xxx 未訂閱
RaynorPao大大:                非常謝謝您耐心的回答,我的程式碼是自動產生的 有一種寫驅動程式的軟體叫做Windriver,他會自己產生BCB3.0 測試程式的程式碼,不過是Dos的, 所以我要把裡面的程式改成Windows視窗 我用的是BCB5.0,自動轉code之後可以執行,不過如果加上一些VCL元件 Compiler都會錯誤,所以我現在可能要想辦法重開專案,再把裡面會用到的 函式給一個個拉進來試試看能不能用......    
引言:
aredfish 你好:
請問?? 你之前是如何建立一個 Console Application 的呢??
(1)在 BCB 中按「File/New/Other」啟動「New Items」Dialog
(2)在「New」Tab 裡面選擇「Console Wizard」啟動「Console Wizard」Dialog
(3)確認「C  」「Use VCL」「Console Application」這三個選項有被選擇
(4)最後按「OK」建立 Console Application,然後加入以下的程式碼
int main(int argc, char* argv[])
{
   AnsiString sz="Hello";
   ShowMessage(sz);
   return 0;
}
(5)試著編譯並執行看看 (小弟我在 BCB 6.0 試過是沒有問題的喔)
    -- >< face="Verdana, Arial, Helvetica">     
        
系統時間:2024-09-10 10:49:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!