線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3901
推到 Plurk!
推到 Facebook!

如何將 AnsiString 轉換成 16 進制的值

尚未結案
stree
一般會員


發表:9
回覆:3
積分:2
註冊:2004-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-22 00:32:35 IP:220.138.xxx.xxx 未訂閱
AnsiString bb;
byte test;
test=Edit1->Text.ToInt();
bb = IntToHex(test,2);
Edit1 <== 使用者輸入 10 進制的值 請教各位先進: 小弟遇到轉換的問題,若小弟想把 bb 的值轉換成 十六進制的值該如何做呢?(IntToHex 轉出來的值會變成 AnsiString)
limeca
中階會員


發表:2
回覆:74
積分:60
註冊:2005-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-23 11:56:08 IP:202.145.xxx.xxx 未訂閱
您好~~ 我不知道您的用意為何?? 在程式裡處理十六進制也要自己做個手腳 可是它已經幫你處理成十六進制的文字了.. 我想自己做些處理應該還ok才對
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-23 12:06:55 IP:61.230.xxx.xxx 未訂閱
stree 您好:    如果純粹是計算之用與顯示無關的話,數字是何種進位的應不會有時麼差別,如果跟顯示有關的話,轉成 AnsiString 也不會有什麼影響的,莫非您有什麼特殊的需求?      7 天天敲鍵盤 v 時時按滑鼠 8
powmien
初階會員


發表:27
回覆:80
積分:41
註冊:2004-10-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-23 12:11:57 IP:60.248.xxx.xxx 未訂閱
呃.... 10進制的值跟16進制的數值是相同的 就是說你拿0x0a/5 是會等於10/5滴. ---------------------------------- 天下英雄出我輩,一入江湖歲月催; 皇圖霸業談笑中,不勝人生一場醉。 發表人 - powmien 於 2005/09/23 12:21:28
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-23 12:37:36 IP:220.138.xxx.xxx 未訂閱
to stree, 不知道您的問題是否解決了,也許各位大大都把問題想得太複雜,不知是否合您用  個人猜想, < class="code"> AnsiString bb; byte test; test=Edit1->Text.ToInt(); // 使用者輸入 10 進制的值, 假設是輸入 16 bb = IntToHex(test,2); // 在此 bb 會變成 10 int aa = StrToInt(bb); // 在此如果直接使用 StrToInt() 則 aa 變成 10, 而不是 16 int realvalue = StrToInt(String("0x") bb); // 正解 只需要在 16 進制的字串前加 "0x" 即可由 StrToInt() 轉回到正確的數 值,因為 StrToInt() 並不知道您給的字串是什麼進制,特別加個 "0x" 開 頭,StrToInt() 就可以自動幫您判斷以 16 進制去解讀輸入字串,如果沒加 "0x" 則以 10 進制去解讀,如果解讀有問題,可能會變成 0 或是發 exception。 C# 初學者請多指教 < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw dllee's sharespace Beckhoff Fieldbus 發表人 - dllee 於 2005/09/23 12:39:23
------
http://www.ViewMove.com
stree
一般會員


發表:9
回覆:3
積分:2
註冊:2004-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-23 13:36:07 IP:61.56.xxx.xxx 未訂閱
if(test == 1)
                getvalue=0x01;
         else if(Edit1->Text == 2)
                getvalue=0x02;
         else if(Edit1->Text == 3)
                getvalue=0x03;
         else if(Edit1->Text == 4)
                getvalue=0x04;
         else if(Edit1->Text == 5)
                getvalue=0x05;
         else if(Edit1->Text == 6)
                getvalue=0x06;
         else if(Edit1->Text == 7)
                getvalue=0x07;
         else if(Edit1->Text == 8)
                getvalue=0x08;
         else if(Edit1->Text == 9)
                getvalue=0x09;
        else if(Edit1->Text == 10)
                getvalue=0x0A;
        else if(Edit1->Text == 11)
                getvalue=0x0B;
        else if(Edit1->Text == 12)
                getvalue=0x0C;
        else if(Edit1->Text == 13)
                getvalue=0x0D;
        else if(Edit1->Text == 14)
                getvalue=0x0E;
        else if(Edit1->Text == 15)
                getvalue=0x0F;
        else if(Edit1->Text == 16)
                getvalue=0x10;
        else if(Edit1->Text == 17)
                getvalue=0x11;
        else if(Edit1->Text == 18)
                getvalue=0x12;
        else if(Edit1->Text == 19)
                getvalue=0x13;
        else if(Edit1->Text == 20)
                getvalue=0x14;
        else if(Edit1->Text == 21)
                getvalue=0x15;
        else if(Edit1->Text == 22)
                getvalue=0x16;
        else if(Edit1->Text == 23)
                getvalue=0x17;
        else if(Edit1->Text == 24)
                getvalue=0x18;
        else if(Edit1->Text == 25)
                getvalue=0x19;
        else if(Edit1->Text == 26)
                getvalue=0x1A;
        else if(Edit1->Text == 27)
                getvalue=0x1B;
        else if(Edit1->Text == 28)
                getvalue=0x1C;
        else if(Edit1->Text == 29)
                getvalue=0x1D;
        else if(Edit1->Text == 30)
                getvalue=0x1E;
        else if(Edit1->Text == 31)
                getvalue=0x1F;
        else if(Edit1->Text == 32)
                getvalue=0x20;
        else if(Edit1->Text == 33)
                getvalue=0x21;
        else if(Edit1->Text == 34)
                getvalue=0x22;
        else if(Edit1->Text == 35)
                getvalue=0x23;
        else if(Edit1->Text == 36)
                getvalue=0x24;
        else if(Edit1->Text == 37)
                getvalue=0x25;
        else if(Edit1->Text == 38)
                getvalue=0x26;
        else if(Edit1->Text == 39)
                getvalue=0x27;
        else if(Edit1->Text == 40)
                getvalue=0x28;
        else if(Edit1->Text == 41)
                getvalue=0x29;
        else if(Edit1->Text == 42)
                getvalue=0x2A;
        else if(Edit1->Text == 43)
                getvalue=0x2B;
        else if(Edit1->Text == 44)
                getvalue=0x2C;
        else if(Edit1->Text == 45)
                getvalue=0x2D;
        else if(Edit1->Text == 46)
                getvalue=0x2E;
        else if(Edit1->Text == 47)
                getvalue=0x2F;
        else if(Edit1->Text == 48)
                getvalue=0x30;
        else if(Edit1->Text == 49)
                getvalue=0x31;
        else if(Edit1->Text == 50)
                getvalue=0x32;
        else if(Edit1->Text == 51)
                getvalue=0x33;
        else if(Edit1->Text == 52)
                getvalue=0x34;
        else if(Edit1->Text == 53)
                getvalue=0x35;
        else if(Edit1->Text == 54)
                getvalue=0x36;
        else if(Edit1->Text == 55)
                getvalue=0x37;
        else if(Edit1->Text == 56)
                getvalue=0x38;
        else if(Edit1->Text == 57)
                getvalue=0x39;
        else if(Edit1->Text == 58)
                getvalue=0x3A;
        else if(Edit1->Text == 59)
                getvalue=0x3B;
        else if(Edit1->Text == 60)
                getvalue=0x3C;
        else if(Edit1->Text == 61)
                getvalue=0x3D;
        else if(Edit1->Text == 62)
                getvalue=0x3E;
        else if(Edit1->Text == 63)
                getvalue=0x3F;
        else if(Edit1->Text == 64)
                getvalue=0x40;
        else if(Edit1->Text == 65)
                getvalue=0x41;
        else if(Edit1->Text == 66)
                getvalue=0x42;
        else if(Edit1->Text == 67)
                getvalue=0x43;
        else if(Edit1->Text == 68)
                getvalue=0x44;
        else if(Edit1->Text == 69)
                getvalue=0x45;
        else if(Edit1->Text == 70)
                getvalue=0x46;
        else if(Edit1->Text == 71)
                getvalue=0x47;
        else if(Edit1->Text == 72)
                getvalue=0x48;
        else if(Edit1->Text == 73)
                getvalue=0x49;
        else if(Edit1->Text == 74)
                getvalue=0x4A;
        else if(Edit1->Text == 75)
                getvalue=0x4B;
        else if(Edit1->Text == 76)
                getvalue=0x4C;
        else if(Edit1->Text == 77)
                getvalue=0x4D;
        else if(Edit1->Text == 78)
                getvalue=0x4E;
        else if(Edit1->Text == 79)
                getvalue=0x4F;
        else if(Edit1->Text == 80)
                getvalue=0x50;
        else if(Edit1->Text == 81)
                getvalue=0x51;
        else if(Edit1->Text == 82)
                getvalue=0x52;
        else if(Edit1->Text == 83)
                getvalue=0x53;
        else if(Edit1->Text == 84)
                getvalue=0x54;
        else if(Edit1->Text == 85)
                getvalue=0x55;
        else if(Edit1->Text == 86)
                getvalue=0x56;
        else if(Edit1->Text == 87)
                getvalue=0x57;
        else if(Edit1->Text == 88)
                getvalue=0x58;
        else if(Edit1->Text == 89)
                getvalue=0x59;
        else if(Edit1->Text == 90)
                getvalue=0x5A;
        else if(Edit1->Text == 91)
                getvalue=0x5B;
        else if(Edit1->Text == 92)
                getvalue=0x5C;
        else if(Edit1->Text == 93)
                getvalue=0x5D;
        else if(Edit1->Text == 94)
                getvalue=0x5E;
        else if(Edit1->Text == 95)
                getvalue=0x5F;
        else if(Edit1->Text == 96)
                getvalue=0x60;
        else if(Edit1->Text == 97)
                getvalue=0x61;
        else if(Edit1->Text == 98)
                getvalue=0x62;
        else if(Edit1->Text == 99)
                getvalue=0x63;
        else if(Edit1->Text == 100)
                getvalue=0x64;
 
問題是解了,但是小弟用的是上面的那個笨法,小弟之所以要這樣是因為,要把這個值以,並列傳輸的法式去傳給它,而接收端它只收16進制的值,所以小弟才不得不這樣做。
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-23 14:39:58 IP:220.138.xxx.xxx 未訂閱
如果是這樣,那就是其他大大們的說明您沒有看懂了  試試 > > < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw dllee's sharespace Beckhoff Fieldbus 發表人 - dllee 於 2005/09/23 14:54:39
------
http://www.ViewMove.com
stree
一般會員


發表:9
回覆:3
積分:2
註冊:2004-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-09-23 16:01:34 IP:61.56.xxx.xxx 未訂閱
看了dllee 先進的文章: 讓小弟對這一方面的知識又大大的增加了,感謝您,如果不介意的話小弟想把 http://delphi.ktop.com.tw/topic.php?topic_id=59242 的文章給存下來 也感謝各位先進的指教(因為之前先進所回答的小弟太笨了一時沒有看懂),謝謝各位先進 發表人 - stree 於 2005/09/23 16:16:53
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-09-24 21:34:11 IP:211.76.xxx.xxx 未訂閱
初學者對於不同的進制總是會感到困擾的,因為平常慣用的就是 10 進制, 其他的進制不常用總是覺得怪怪的,但其實,我們平常也用 12 進制,如:1打=12個, 英制長度如:1呎=12吋 24 進制,如:1天=24小時 60 進制,如:1小時=60分鐘, 1分鐘=60秒 這些常用的非10進制,因為從小就用,也不會特別覺得怪,(當然,像我現在 要教我的小朋友這些非10進制就要花些功夫了) 以下是以前上課用的講義,請參考: < class="code"> ※※※※※※※※※※※※ 第 八 週 ※※※※※※※※※※※※ ※※※※※※※※※※※※ 講 義 內 容 ※※※※※※※※※※※※ ■ 第十八章 數字系統與二進碼 電腦只懂 0 與 1 這兩個數值,所有存在硬碟的東西,都是用一堆 0 與 1 來存的, 如:你的電腦作業、圖形資料、文字資料、應用程式、作業系統等等。但是我們所 熟悉的數值並不是只有 0 與 1 ,還有 2、3、4、...、9,而且是十進位的。 什麼是十進位(Decimal)? 十進位有 0,1,2,3,4,5,6,7,8,9 等數值, 9 加 1 會 等於 十,而這個十已經不是 0 ~ 9 所能表示了,所以要進一位,也就是 10 。 同理,什麼是二進位(Binary)? 二進位有 0,1 等數值, 1 加 1 會等於 二, 而這個二已經不是 0 ~ 1 所能表示了,所以要進一位,也就是 ( 10 )b 。 什麼是八進位(Octal)? 八進位有 0,1,2,3,4,5,6,7 等數值, 7 加 1 會等於 八, 而這個八已經不是 0 ~ 7 所能表示了,所以要進一位,也就是 ( 10 )o 。 什麼是十六進位(Hexadecimal)? 十六進位有 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 等數值, F 加 1 會等於 十六,而這個十六已經不是 0 ~ F 所能表示了, 所以要進一位,也就是 ( 10 )h 。 ◎ 數字系統(Number System) 十進位系統,是由十個數元(digit),即 0,1,2,3,4,5,6,7,8,9 為基底(Base)的一 套系統。任何一個數字只能用這十個數元來表示,我們也可以說,十進位數字系統 是一套以十為基底的數字系統。同理: K進位系統,是由K個數元,即 0,1,2,...,K-1 。在K進位的數字系統中,其 基底為K,則該系統的任何一個正數(不管是整數或是實數)都可以用一個多項式N 來表示: p-1 1 0 -1 -2 -q N = A K ... A K A K A K A K ... A K p-1 1 0 -1 -2 -q p-1 i = Σ A K , -q ≦ i ≦ p-1 , A 屬於 {0,1,2,...,K-1} i=-q i i 這個以K為基底的數字N,通常寫成 ( p 是整數的位數,q 是小數的位數 ) N = ( A A ~ A A . A A ~ A ) k p-1 p-2 1 0 -1 -2 -q k 例如: 十進位的 567.89 , 567.89 在整數部分有 3 位,小數部分有 2 位: 2 1 0 -1 -2 567.89 = 5*10 6*10 7*10 8*10 9*10 下表,是將十進位的 0~16 的數值,分別用十進位、二進位、八進位、十六進位 來表示: ┌────┬────┬────┬────┐ │ 十進位 │ 二進位 │ 八進位 │十六進位│ │ (Dec)d │ (Bin)b │ (Oct)o │ (Hex)h │ ├────┼────┼────┼────┤ │ 0 │ 0 │ 0 │ 0 │ │ 1 │ 1 │ 1 │ 1 │ │ 2 │ 10 │ 2 │ 2 │ │ 3 │ 11 │ 3 │ 3 │ │ 4 │ 100 │ 4 │ 4 │ │ 5 │ 101 │ 5 │ 5 │ │ 6 │ 110 │ 6 │ 6 │ │ 7 │ 111 │ 7 │ 7 │ │ 8 │ 1000 │ 10 │ 8 │ │ 9 │ 1001 │ 11 │ 9 │ │ 10 │ 1010 │ 12 │ A │ │ 11 │ 1011 │ 13 │ B │ │ 12 │ 1100 │ 14 │ C │ │ 13 │ 1101 │ 15 │ D │ │ 14 │ 1110 │ 16 │ E │ │ 15 │ 1111 │ 17 │ F │ │ 16 │ 10000 │ 20 │ 10 │ └────┴────┴────┴────┘ ◎ 將以下數值表示成十進位數字: ○ ( 83.452 )d 1 0 -1 -2 -3 ( 83.452 )d = 8*10 3*10 4*10 5*10 2*10 = 80 3 0.4 0.05 0.002 = 83.452 ○ ( 11010.011 )b 4 3 2 1 0 -1 -2 -3 ( 11010.011 )b = 1*2 1*2 0*2 1*2 0*2 0*2 1*2 1*2 = 16 8 0 2 0 0 0.25 0.125 = 26.357 ○ ( 435.24 )o 2 1 0 -1 -2 ( 435.24 )o = 4*8 3*8 5*8 2*8 4*8 = 256 24 5 0.25 0.0625 = 285.3125 ○ ( 9BE.C8 )h 2 1 0 -1 -2 ( 9BE.C8 )h = 9*16 11*16 14*16 12*16 8*16 = 2304 176 14 0.75 0.03125 = 2494.78125 如果想要把它搞懂,可以試試自己作 11 進制, 7 進制, 3 進制等等奇怪的進 制,如果可以自己把數值在 10->11->7->3 進制之間轉換,那各式不同的進制 都難不到您了 在 > > < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw dllee's sharespace Beckhoff Fieldbus
------
http://www.ViewMove.com
系統時間:2024-11-23 7:53:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!