一个语法转换的问题
这里有段c的代码,那个大哥可以帮忙转换成DELPHI的代码,谢谢了
- C# code
//---------------------------------------AnsiString __fastcall TForm1::EnCode(AnsiString string){char cas_str[]="9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST";int cas_str_buffer[16];int cas_esi = 37;char src_str[128],dec_str[128]="";int k=0;int cas_eax,cas_edx;div_t x;unsigned int i,j;cas_str_buffer[15]=25;cas_str_buffer[14]=35;cas_str_buffer[13]=182;cas_str_buffer[12]=236;cas_str_buffer[11]=43;cas_str_buffer[10]=41;cas_str_buffer[9]=53;cas_str_buffer[8]=18;cas_str_buffer[7]=226;cas_str_buffer[6]=215;cas_str_buffer[5]=24;cas_str_buffer[4]=117;cas_str_buffer[3]=35;cas_str_buffer[2]=201;cas_str_buffer[1]=52;cas_str_buffer[0]=17;strcpy(src_str,string.c_str());for ( i=0;i<strlen(src_str);i++){ for(j=0;j<strlen(cas_str);j++) { if (src_str[i]==cas_str[j]){ if(i<16) cas_eax=cas_str_buffer[i]; else { x=div(i,16); cas_eax=cas_str_buffer[x.rem] ; } cas_edx=cas_esi+cas_esi*2 ; cas_eax=cas_eax^cas_edx; cas_eax=cas_eax^k; cas_eax=cas_eax+j; x = div(cas_eax,62); dec_str[i]=cas_str[x.rem]; cas_edx=x.rem ; cas_esi=cas_esi^(cas_edx+9433); break; } } if( dec_str[i]==NULL) dec_str[i]=src_str[i]; k=k+5;} string=dec_str;return string;}
[解决办法]
div_t是一个结构,是函数div_t div(int a, int b)的返回值,div_t中 quot表示a/b,而rem表示a%b。即商和余数。
c_str()函数是string对象的一个函数,它返回一个const char*指针,作用就是把string类型的变量转化为C字符串。
strcpy(src_str,string.c_str());这句的意思就是把string对象里的字符串copy到src_str中。虽然string和都是字符串类型的变量。但
因为strcpy的形参不接受string的类型,所以需要那么一个转换,你直接看成字符串复制就行咯。