?? c#
字號(hào):
[C#代碼轉(zhuǎn)換為VC經(jīng)驗(yàn)]
king_koo,2005/01/28
[概述]
本文以實(shí)現(xiàn)aes算法加解密例程為例,說一下C#代碼轉(zhuǎn)換為VC代碼經(jīng)驗(yàn)。
例子代碼下載Http://otiana.com/vcangle/source/aesdemo.rar
相應(yīng)C#的例子請(qǐng)參考Http://www.vckbase.com/document/viewdoc/?id=1068
這個(gè)c#的類是沒有頭文件的。在vc中我們?yōu)榱耸褂梅奖阈枰獮樗麡?gòu)造一個(gè)頭文件,
把相應(yīng)的變量和函數(shù)聲明放進(jìn)來即可。
[2維數(shù)組]
C#中你可以arr[a,b]這樣表示2維數(shù)組,VC可以arr[a][b],但a和b不確定時(shí)就比較
麻煩。所以和多地方我們用arr[a*b]表示2維數(shù)組,訪問時(shí)用arr[i*b+j]。如下例:
C#:
byte[,] temp = new byte[a,b];//聲明。a、b是常量
for(int i=0;i<a;++i)
for(int j=0;j<b;++j)
temp[i,j]=0;//使用
VC:
byte temp[a*b];//沒事沒必要?jiǎng)討B(tài)分配內(nèi)存
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
temp[i*b+j]=0;//使用
[循環(huán)]
注意上例中的++i了嗎?我沒有寫錯(cuò),C#中的for循環(huán)用++i,VC用i++。
[變量的多次聲明]
C#中變量的多次聲明,如:
for(int i=0;i<10;++i){......}
for(int i=0;i<4;++i){.....}
是合法的。VC中則提示語法錯(cuò)誤,要把后邊的聲明去掉:
for(int i=0;i<10;i++){......}
for(i=0;i<4;i++){.....}
[變量聲明]
C#中變量聲明很喜歡用new的,如:
byte[] result = new byte[4];
因?yàn)镃#有垃圾回收機(jī)制所以一般不用你去釋放內(nèi)存,
可是在VC中就麻煩了,所以我一般改成:
byte result[4];
[函數(shù)返回]
C#中可以這樣返回
byte[] SubWord(byte[] word)
{
byte[] result = new byte[4];
......
return result;
}
在vc中卻是錯(cuò)誤的的,因?yàn)閞esult是局部變量,函數(shù)返回后指針就丟了。
我們可以在參數(shù)中返回,改成這樣:
SubWord(byte* word,byte *result)
{
......
}
[>>和+的優(yōu)先級(jí)]
C#中+的優(yōu)先級(jí)要比>>高,在VC中卻恰好相反,+的優(yōu)先級(jí)要比>>低。
所以轉(zhuǎn)換時(shí)要用括號(hào)改變運(yùn)算優(yōu)先級(jí)。如C#中:
this.State[r,c] = this.Sbox[ (this.State[r,c] >> 4), (this.State[r,c] & 0x0f) ];
VC則為:
State[r][c] = Sbox[ 16*(State[r][c] >> 4)+ ( State[r][c] & 0x0f) ];
[]
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -