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

又是關於16進制接收顯示的問題..

答題得分者是:windblown
highnetboy
一般會員


發表:3
回覆:2
積分:1
註冊:2004-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-12 11:23:49 IP:163.28.xxx.xxx 未訂閱
不好意思..這問題我問過了..但是後來才發現又有問題請問各位高手..我現在是利用DynamicArray x1;的方式..然後在令x1.Length=6;..依序發射6筆16進位的數值..我直接把COM的RX跟TX短路.來作測試..想把收到得數字依序顯示在memo或label的元件上..我是利用 Memo1->Text=Comm1->Input;的方式...這樣會只收到一個亂碼!!我知道這個方法是錯的..請問有人可以告訴我怎麼解決嗎??? 之前taishyang 給我一篇http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35700的方法.. 但是它其中rdata[i]=IntToHex(ByteReceive[i],1);這一項..為什麼是用10進制轉16進制...我接收到的已經是16進制了..為什麼它還用IntToHex..我知道可能是為了讓它變成字串顯示在memo上..但是這樣應該不對吧..沒有16進制直接轉字串的嗎??麻煩高手們了..也謝謝上次taishyang 的回應..
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-12 12:41:30 IP:61.229.xxx.xxx 未訂閱
我想你應該是誤會「數值」的意思了 從 Comm 收到的資料是一種「數值」,並沒有所謂的 10 進位或 16 進位,而是使用者要如何解釋它而已;而 IntToHex() 就是把一個「數值」轉成 16 進位的字串的函數。 Memo1->Text 要接受一個 AnsiString,所以 Comm1->Input 就會以 AnsiString 來解釋,而內部轉換,就會以 char* 的方式解釋成字串,因此會變成亂碼。
highnetboy
一般會員


發表:3
回覆:2
積分:1
註冊:2004-08-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-12 14:03:13 IP:163.28.xxx.xxx 未訂閱
ㄛㄛ...原來如此ㄚ...那我懂了..也就是說..今天假設我傳255這個數字(假設我心裡面把他定義成10進制)..他是變成FF這個字串....對嗎....真是謝謝windblown 你的解釋!! 發表人 - highnetboy 於 2005/05/12 14:06:11
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-12 16:20:04 IP:61.229.xxx.xxx 未訂閱
是的,就如同你的例子 IntToHex(255, 2) 所產生的字串是 "FF" 而 IntToHex(0xff, 2) 所產生的字串也是 "FF";這是因為 255 與 0xff 都是「數值」,而 "FF" 是給我們眼睛「看到」這個數值的字串 期望對你的觀念有所幫助
系統時間:2024-03-29 9:37:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!