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

一個轉碼的問題

答題得分者是:allenchan
clarinat
一般會員


發表:3
回覆:6
積分:1
註冊:2004-11-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-04 05:22:30 IP:220.141.xxx.xxx 未訂閱
請問 我寫了一個把數字轉成二進位後 再轉成GARY CODE 再把GARY CODE轉回數值的程式 請問有沒有辦法不要用EDIT元件而可以寫出同樣效果的程式 謝謝        [code]                 int a=255;  //輸入數值         AnsiString b=IntToBin(a); //轉成二進位         Edit2->Text= b.SubString(24,9); //取後9碼        for(int i=1;i<10;i ) { p[i]=Edit2->Text[i]-48;//把string一碼一碼的取出 } for(int i=1;i<9;i ) { //做xor的動作 if((p[i] p[i 1])%2==0) p[i]=0; else p[i]=1; Edit1->Text=Edit1->Text p[i]; //xor後秀出 } int answer=0; //二進位轉十進位 answer=Edit1->Text[8]*1 Edit1->Text[7]*2 Edit1->Text[6]*4 Edit1->Text[5]*8 Edit1->Text[4]*16 Edit1->Text[3]*32 Edit1->Text[2]*64 Edit1->Text[1]*128-12240;// Edit3->Text=answer; [code]
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-04 09:41:43 IP:61.62.xxx.xxx 未訂閱
如果您原本程式計算的結果是正確的,那改成下面應該可以
int ConvertTest(int a, AnsiString &s1)
{
    AnsiString b = IntToBin(a); //轉成二進位
    AnsiString s2 = b.SubString(24, 9); //取後9碼        int p[10];
    for(int i = 1; i < 10; i  )
    {
        p[i] = s2[i] - 48; //把string一碼一碼的取出
    }
    for(int i = 1; i < 9; i  )
    { //做xor的動作
        if((p[i]   p[i   1]) % 2 == 0)
            p[i] = 0;
        else
            p[i] = 1;
        s1 = s1   p[i]; //xor後秀出
    }        int answer = 0; //二進位轉十進位
    answer = s1[8] * 1   s1[7] * 2   s1[6] * 4   s1[5] * 8
              s1[4] * 16   s1[3] * 32   s1[2] * 64   s1[1] * 128 - 12240;
    return answer;
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString s1;
    /* n 是你轉回的數值, s1 是你的 Gary Code */
    int n = ConvertTest(255, s1);
    Caption = s1;
}
發表人 - allenchan 於 2004/12/04 10:12:16
系統時間:2024-06-28 18:52:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!