各位大神。请问这段C++代码翻译成Delphi 是什么?

wangshe3099 2017-01-09 08:45:23
各位大神。请问这段C++代码翻译成Delphi 是什么?
void CommentAsc(char *soustr, short len, unsigned char *desstr)
{
int i, ch;
char tmpstr[53248]={0};

sprintf(tmpstr, "%*.*s",len,len,soustr);
for( i=0;i<(len+1)/2;i++)
{
sscanf( tmpstr+i*2, "%02X", &ch);
desstr[i] = ch & 0xFF;
}
desstr[i] = '\0';
}
...全文
1037 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1. 没tform1什么事,这是全局函数 2. StrToIntDef(tmpstr,0)+i*2 这个明显对C代码理解错了 3. 如果原样翻译的话,char *应该用PAnsiChar,如果用string的话,short len这个参数可以不要了 4. 代码很臃肿
pzx521521 2017-03-07
  • 打赏
  • 举报
回复
procedure TForm1.CommentAsc(soustr:string;len:Integer;var desstr:string); var i : Integer; ch, tmpstr, FormatStr: string; result: array of Char; aChar: Char; begin //在”%m.ns”中,m 表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印) //,n 才表示从相应的字符串中最多取用的字符数。 SetLength(result,(len+1) div 2 + 1); FormatStr:= '%'+inttostr(len)+'.'+inttostr(len)+'s'; tmpstr := Format(FormatStr ,[soustr]); I := 0; while i<(len+1)/2 do begin ch := format('%.2x',[StrToIntDef(tmpstr,0)+i*2]); aChar := char(StrToIntDef('$'+ch,0)); result[I] := aChar; I:=I+1; end; desstr:=string(result); end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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