请教pascal转换翻译为C的代码的问题?

迷死特兔 2006-02-14 12:44:06
下面两个pascal函数,想转换为c代码的,自己写了一下老是有问题,请教一下高手,如何转换翻译:

const
EDC1 = 11; // 常量
EDC2 = 22; // 常量

function Encrypt(S:String;Key:Word):String;
var
I,j:Integer;
begin
Result:=S;
for I:=1 to Length(S) do
begin
Result[I]:=char(byte(S[I]) xor (Key shr 8));
Key:=(byte(Result[I])+Key)*EDC1+EDC2
end;
S:=Result;
Result:='';
for I:=1 to Length(S) do
begin
j:=Integer(s[i]);
Result:=Result+Char(65+(j div 26))+Char(65+(j mod 26));
end;
end;


function Decrypt(S:String;Key:Word):String;
var
I,j:Integer;
begin
Result:='';
for I:=1 to (length(S) div 2) do
begin
j:=(Integer(S[2*i-1])-65)*26;
j:=j+(Integer(S[2*i])-65);
Result:=Result+Char(j);
end;
S:=Result;
for I:=1 to Length(S) do
begin
Result[I]:=Char(byte(S[I]) xor (Key shr 8));
Key:=(byte(S[I])+Key)*EDC1+EDC2;
end;
end;
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐老猫 2006-02-14
  • 打赏
  • 举报
回复
为什么要转C代码?按照API规范写成DLL函数就是了,也就是回避string,采用PChar类型传递字符串。字符串不可以用于函数返回值,字符串空间在调用端开辟和回收,字符串长度需要作为参数传递给函数。
madbo 2006-02-14
  • 打赏
  • 举报
回复
学习
gzmhero 2006-02-14
  • 打赏
  • 举报
回复
#define EDC1 11
#define EDC2 22
void Encrypt(char *S,Word Key,int len,char *result)
{
int i;
byte j;
CopyMemory(result,S,len);
for(i=0;i<len;i++){
result[i]=S[i]^(Key>>8);
Key=(byte(result[i])+Key)*EDC1+EDC2;
}
CopyMemory(S,result,len);
for(i=0;i<len;i++){
j=S[i];
result[2*i]=65+(j/26);
result[2*i+1]=65+(j % 26);
}
}

void Decrypt(char *S,Word Key,int len,char *result)
{
int i;
byte j;
for(i=0;i<len/2;i++){
j=(S[2*i]-65)*26;
j+=S[2*i+1]-65;
result[i]=j;
}
CopyMemory(S,result,len);
for(i=0;i<len/2;i++){
result[i]=byte(S[i]^(Key>>8));
Key=(byte(S[i])+Key)*EDC1+EDC2;
}
}
c中没有String 类型,用char *,调用:
加密:
char result[100];
ZeroMemory(result,100);
Encrypt(Edit1->Text.c_str(),1000,Edit1->Text.Length(),result);
Label1->Caption=result;
解密:
char result[100];
ZeroMemory(result,100);
Decrypt(Label1->Caption.c_str(),1000,Label1->Caption.Length(),result);
Label2->Caption=result;


16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧