請問unsigned short 轉換 |
尚未結案
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
多謝您的回覆
小弟還有些問題想請教
假設有一函數定義為
int psWrite( unsigned long int handle, unsigned short ps_key, unsigned short store, unsigned short ps_length, unsigned short * ps );我現在要傳一個16進位的數值到psWrite函數中的最後一個參數中(傳到 * ps中) 程式碼如下: unsigned short data[16] ; //Define data for (int i=0;i<8;i++) data[i] = (unsigned short)Form1->Edit1->Text.SubString(i*5+1,4).ToInt(); if(psWrite(devHandle, pskey_usr, PS_STORES_I, 2, data )== 1) { // Do Something... }在for裡面這樣寫目的是要在Edit1裡面一次取4個值丟入data中 然後再傳入psWrite 可是這樣會有錯誤.. 因為Edit我是要輸入16進制值 所以會有 a~f 的英文字 所以在.ToInt()就會出現錯誤 可是psWrite中的 *ps又定義為unsigned short 這該怎麼餵入?? < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23565157&CC=527023"> |
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
引言: 請問各位先進 如何將資料型態int 轉換成 unsigned short , short, unsigned long呢?? >>< face="Verdana, Arial, Helvetica"> 如果使用机率頻繁的話也可以寫成function。unsigned short IntToUnsignedShort(int i){ return (unsigned short)i; } ...... void main(void){ int i; i=20; i=IntToUnsignedShort(i); }當然原理跟Stallion 前輩說的一樣。 |
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
引言: 多謝您的回覆 小弟還有些問題想請教 假設有一函數定義為很簡單,你不要一次抓一個字串出來,一次抓一個字元出來,然後自行轉成相等的10進制乘上16的次方再全部累加起來。 手上沒BCB的軟体不能直接測試code 有沒有錯誤,希望你能了解。int psWrite( unsigned long int handle, unsigned short ps_key, unsigned short store, unsigned short ps_length, unsigned short * ps );我現在要傳一個16進位的數值到psWrite函數中的最後一個參數中(傳到 * ps中) 程式碼如下:unsigned short data[16] ; //Define data for (int i=0;i<8;i++) data[i] = (unsigned short)Form1->Edit1->Text.SubString(i*5+1,4).ToInt(); if(psWrite(devHandle, pskey_usr, PS_STORES_I, 2, data )== 1) { // Do Something... }在for裡面這樣寫目的是要在Edit1裡面一次取4個值丟入data中 然後再傳入psWrite 可是這樣會有錯誤.. 因為Edit我是要輸入16進制值 所以會有 a~f 的英文字 所以在.ToInt()就會出現錯誤 可是psWrite中的 *ps又定義為unsigned short 這該怎麼餵入?? < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23565157&CC=527023"> int temp,total; temp=0; total=0; for(int i=0;i<4;i++) { if(Form1->Edit1->Text.SubString(i,1)=='f')temp=15; if(Form1->Edit1->Text.SubString(i,1)=='e')temp=14; if(Form1->Edit1->Text.SubString(i,1)=='d')temp=13; if(Form1->Edit1->Text.SubString(i,1)=='c')temp=12; if(Form1->Edit1->Text.SubString(i,1)=='b')temp=11; if(Form1->Edit1->Text.SubString(i,1)=='a')temp=10; if(temp < 10) temp=Form1->Edit1->Text.SubString(i,1)).ToInt(); // FFFF = F * 16^3 + F* 16^2 + F * 16^1 + F * 16^0 = 65535 switch(i){case 0: total+=(temp*4096); break; // MSB // temp * 16的三次方 case 1: total+=(temp*256); break; case 2: total+=(temp*16); break; case 3: total+=temp; break; // LSB // temp * 16的零次方 default: break; } } ...... data[j] = (unsigned short)total;發表人 - powmien 於 2005/07/20 13:33:38 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |