各位大神。请问这段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';
}
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';
}
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;
2. StrToIntDef(tmpstr,0)+i*2 这个明显对C代码理解错了
3. 如果原样翻译的话,char *应该用PAnsiChar,如果用string的话,short len这个参数可以不要了
4. 代码很臃肿