char Dec2HexChar(short int n)
{
if ( 0 <= n && n <= 9 ) {
return char( short('0') + n );
} else if ( 10 <= n && n <= 15 ) {
return char( short('A') + n - 10 );
} else {
return char(0);
}
}
short int HexChar2Dec(char c)
{
if ( '0'<=c && c<='9' ) {
return short(c-'0');
} else if ( 'a'<=c && c<='f' ) {
return ( short(c-'a') + 10 );
} else if ( 'A'<=c && c<='F' ) {
return ( short(c-'A') + 10 );
} else {
return -1;
}
}
string EncodeURL(const string &URL)
{
string strResult = "";
for ( unsigned int i=0; i<URL.size(); i++ )
{
char c = URL[i];
if (
( '0'<=c && c<='9' ) ||
( 'a'<=c && c<='z' ) ||
( 'A'<=c && c<='Z' ) ||
c=='/' || c=='.'
) {
strResult += c;
}
else
{
int j = (short int)c;
if ( j < 0 )
{
j += 256;
}
int i1, i0;
i1 = j / 16;
i0 = j - i1*16;
strResult += '%';
strResult += Dec2HexChar(i1);
strResult += Dec2HexChar(i0);
}
}
return strResult;
}
std::string DecodeURL(const std::string &URL)
{
string result = "";
for ( unsigned int i=0; i<URL.size(); i++ )
{
char c = URL[i];
if ( c != '%' )
{
result += c;
}
else
{
char c1 = URL[++i];
char c0 = URL[++i];
int num = 0;
num += HexChar2Dec(c1) * 16 + HexChar2Dec(c0);
result += char(num);
}
}
return result;
}
C++ URL encode/decode (gb2312)
最新推荐文章于 2024-08-11 19:54:21 发布