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

想請教一個ASCII 轉Unicode UCS-2

尚未結案
rookie
一般會員


發表:26
回覆:38
積分:12
註冊:2003-04-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-03 10:31:11 IP:61.222.xxx.xxx 未訂閱
各位好 小弟有一個ASCII 轉Unicode UCS-2的問題 ASCII 是1個byte,Unicode UCS-2 是兩個byte 如果(00)H到(7F)H 從ASCII 轉到UCS-2是(0000)H到(007F)H 那中文字的話怎麼轉呀 譬如 '中'這個字(A4A4)H是不是直接用ASCII(A4A4)H 到UCS-2(A4A4)H 我是用C寫...不知道要貼到哪一版... 謝謝 發表人 - rookie 於 2003/12/03 11:38:46
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-03 11:26:35 IP:61.60.xxx.xxx 未訂閱
char temp[5];
//中
temp[0] = 0xa4;
temp[1] = 0xa4;
//不
temp[2] = 0xa4;
temp[3] = 0xa3;
temp[4] = 0;
ShowMessage((String)temp) ;
試試這是否是您所需要的 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
rookie
一般會員


發表:26
回覆:38
積分:12
註冊:2003-04-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-03 14:31:50 IP:61.222.xxx.xxx 未訂閱
謝謝mieng 我寫了一個小function不知道正不正確
BYTE* ASCII_UCS2(BYTE* ASCII)
{
 BYTE UCS2[140]={0};
 BYTE i ,j=0,flg=0;
 for (i=0;i        發表人 - rookie 於 2003/12/03  14:35:07    發表人 - taishyang 於 2003/12/03  15:00:22
        
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-03 21:18:19 IP:61.221.xxx.xxx 未訂閱
BYTE* ASCII_UCS2(BYTE* ASCII)
{
 BYTE UCS2[140]={0};
 BYTE i ,j=0,flg=0;
 for (i=0;iUCS2[j  ]=0x30;    //應該是補字元"0"而不是補數值 0,數值0表示陣列資料結束,或著不用補
      UCS2[j  ]=ASCII[i];
    }
  else
    {
      UCS2[j  ]=ASCII[i];
      if (flg==1)flg=0;
      else flg=1;
    }
 }
return UCS2;
}
 
這樣應該就可以了,只是感覺上以乎等於沒轉 <> > 學習中請大家多多指導呦~~ ☆星霧☆(
rookie
一般會員


發表:26
回覆:38
積分:12
註冊:2003-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-04 10:29:19 IP:61.222.xxx.xxx 未訂閱
謝謝mieng的回應 我是要寫傳送中英文簡訊到手機的程式 只是剛剛接觸有很多不了解 還請mieng指教指教 照mieng兄的說法,我好像要把他拆成4個bit 那要如何做到呢,不是一次都傳8個bit嗎 謝謝指導
loverlin
一般會員


發表:1
回覆:35
積分:22
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-04 11:10:54 IP:61.228.xxx.xxx 未訂閱
我用一個比較偷懶的方式 直接用一個中文字轉成 WideChar 然後用 szPDUMsg := Format('%.04x',[wWord]); 的方式~~  比較不好的是只限在 Windows 上用而已     
------
kk-boy
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-04 11:34:31 IP:61.60.xxx.xxx 未訂閱
        BYTE temp[5]={0xa4,0xa4,0xa7,0x64,0};
        char jjj[3];
        String kk="";
        int iii;
        for (int i=0;i<5;i  )
        {
          iii = temp[i];
          kk  = itoa(iii,jjj,16);//數值轉成16進制字串顯示
        }
        Edit1->Text = kk;
試試這個轉換,就可以將16進制的數值轉成兩個字元表示, 再將轉換好的字元直接送出就可以了 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
rookie
一般會員


發表:26
回覆:38
積分:12
註冊:2003-04-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-08 14:09:51 IP:61.222.xxx.xxx 未訂閱
謝謝mieng的回應 我自己在試試看
系統時間:2024-05-18 19:55:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!