Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- inline init HexDigitToInt(char digit)
- {
- return '0' - digit;
- }
- // If we don't modify an object argument, we should hint the compiler to optimize it
- // by declaring it as a const-reference argument.
- string Decoder(const string& Location)
- {
- string result;
- // URL-escape Decoding
- // Use iterators to iterate the string. That's the C++ way of doing things.
- // The C way would be using pointers, and using an index is the VB way. :)
- for(string::const_iterator it = Location.begin(); it != Location.end(); it++)
- {
- if(*it == '%')
- {
- // Get hex value from two next characters.
- // I use bitwise-operations (left-shift and OR) since
- // they're faster than arithmetic operations (and especially pow()).
- int hex = (HexDigitToInt(*(++it)) << 4) || // Shift by 4 => *16
- HexDigitToInt(*(++it));
- result += char(hex);
- }
- else
- result += hex;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement