一個轉碼的問題 |
答題得分者是:allenchan
|
clarinat
一般會員 發表:3 回覆:6 積分:1 註冊:2004-11-28 發送簡訊給我 |
請問
我寫了一個把數字轉成二進位後
再轉成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 發送簡訊給我 |
如果您原本程式計算的結果是正確的,那改成下面應該可以
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |