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

資料型態轉換問題一問...........

尚未結案
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-08 20:06:46 IP:163.28.xxx.xxx 未訂閱
各位大大: 問題一: 為何當我從暫存器中取回4bytes的資料後,進行該4個bytes的資料轉換,轉換成 16進位時,4個bytes中有一個經轉換後大於80(16進位型態)一經轉換該大於80的資料救被轉會成-FFFFFF80的型態。請問為何16進位制大於80都會出現這種狀況?請問該如何解決這種問題?(小於80的資料轉換都可以正確的被轉換成16或10進位制,唯獨超過80的資料一經轉換都會自動加上負號及FFFFFF。我是用IntToHex()與AnsiString()這兩個函式配合轉換!!)請各位大大提供我一些寶貴的意見吧!! 問題二: 請問若這4個位元組的資料要轉換成浮點形式來表示時,請問該如何撰寫轉換程式?可否提供我一些指導意見!!
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-10 13:19:21 IP:61.226.xxx.xxx 未訂閱
引言: 各位大大: 問題一: 為何當我從暫存器中取回4bytes的資料後,進行該4個bytes的資料轉換,轉換成 16進位時,4個bytes中有一個經轉換後大於80(16進位型態)一經轉換該大於80的資料救被轉會成-FFFFFF80的型態。請問為何16進位制大於80都會出現這種狀況?請問該如何解決這種問題?(小於80的資料轉換都可以正確的被轉換成16或10進位制,唯獨超過80的資料一經轉換都會自動加上負號及FFFFFF。我是用IntToHex()與AnsiString()這兩個函式配合轉換!!)請各位大大提供我一些寶貴的意見吧!! 問題二: 請問若這4個位元組的資料要轉換成浮點形式來表示時,請問該如何撰寫轉換程式?可否提供我一些指導意見!!
clio4177您好: 請參考以程式碼 (1) int i = 4294967168; // 等於0xFFFFFF80 IntToHex(__int32(i),8); (2) .h AnsiString __fastcall FloatToHex(float f); float __fastcall HexToFloat(AnsiString str); .cpp #include "stdio.h" //浮點轉16進位函數,返回值為AnsiString型態 AnsiString __fastcall TForm1::FloatToHex(float f) { AnsiString str; unsigned char buf[4]; *(float*)buf = f;//強迫轉型 str.sprintf("XXXX",buf[0],buf[1],buf[2],buf[3]); return str; } //16進位轉浮點函數,返回值為float型態 float __fastcall TForm1::HexToFloat(AnsiString str) { float f; unsigned char buf[4]; sscanf(str.c_str(),"XXXX",&buf[0],&buf[1],&buf[2],&buf[3]); f = *(float*)buf;//強迫轉型 return f; } 希望對你有幫助.
系統時間:2024-05-11 21:50:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!