Parsi Coders

نسخه‌ی کامل: سوال راجع به یک تابع به زبان c++ و وظیفه ان در انتی فیشینگ
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
کد:
boolUrlUnescapeInplace(char*pszUrl){
constchar*src;
char*dst;
charwc;

if(!pszUrl)
returnfalse;

src=dst=pszUrl;

do
{
wc=*src;
if(wc=='%')
{
if(src[1]=='U')
{
if(unescape_char(src+2,4,&wc))
src+=4;/* Advance to end of escape */
}
else
{
if(unescape_char(src+1,2,&wc))
src+=2;/* Advance to end of escape */
}
}
*dst++=wc;
src++;
}while(wc);

returntrue;}
درود
تابع بالا از تابع زیر هم استفاده میکنه :
کد:
bool unescape_char(const char* hexstr, int chars, char* pwc)
{
char res = 0;
char wc;
int i;
for (i=0; i<chars; i++)
{
  res <<= 4;
  wc = *hexstr++;
  if (wc >= '0' && wc <= '9')
   res |= (wc - '0');
  else if (wc >= 'a' && wc <= 'f')
   res |= (wc - 'a' + 10);
  else if (wc >= 'A' && wc <= 'F')
   res |= (wc - 'a' + 10);
  else
   return false;
}
*pwc = res;
return true;
در واقع تابع UrlUnescapeInPlace function کار زیر رو انجام میده :
Converts escape sequences back into ordinary characters and overwrites the original string.
توضیحات بیشتر :
http://msdn.microsoft.com/en-us/library/...s.85).aspx
:-)
خواهشا دوستان جوابهایی رو قرار بدید که مفید باشند نه اینکه صرفا خواسته باشید یه جواب داده باشید من کار این تابع رو در انتی فیشینگ می خوام مطالب زیاد تو اینترنت میشه راجع به توابع سی پیدا کرد برداشت خودتون رو بنویسید ممنون
با تشکر
خوب این چیشو من بگم؟
کد:
bool unescape_char(const char* hexstr, int chars, char* pwc)
char   برای کاراکتر ها
int   برای اعداد صحیح کوچک
hexstr//کارکتر هیکس
تابع بالا کارکتر (2ووردی کارکتر و یک ورودی
int
که برای اعداد هست
و یک ورودی const
const chie?
;   مقدار   =   نام ثابت   نوع داده   const
//
{
char res = 0//متغییر ریس برابر 0 قرار میگیره
char wc;//یه مقدار wc
//ثابت تعریف میشه
int i;//یک متغییر عددی
for (i=0; i<chars; i++)//ایجاد یک حلقه
متغییر
i
برابر 0 قرار میگیره {
   res <<= 4;
   wc = *hexstr++;
   if (wc >= '0' && wc <= '9')
    res |= (wc - '0');
   else if (wc >= 'a' && wc <= 'f')
    res |= (wc - 'a' + 10);
   else if (wc >= 'A' && wc <= 'F')
    res |= (wc - 'a' + 10);
   else
    return false;
}
*pwc = res;//در اینجا متغییر pwc
رو برابر متغییر ریس قرار میده
return true;/مقدار برگشتی صحیح