各位大神。請問這段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';
}
uj5u.com熱心網友回復:
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;
uj5u.com熱心網友回復:
1. 沒tform1什么事,這是全域函式2. StrToIntDef(tmpstr,0)+i*2 這個明顯對C代碼理解錯了
3. 如果原樣翻譯的話,char *應該用PAnsiChar,如果用string的話,short len這個引數可以不要了
4. 代碼很臃腫
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56585.html
