Percent encoding is used to encode some reserved characters in the URI. See Wikipedia for more details.
As part of adding URL encoder in DevRider, I put together some notes which may be useful for others so publishing it here.
Here we'll take a single character :
and convert it to %3A
which is the equivalent encoded character. This is a very simple example and don't cover unicode characters but it is similar in principle.
We start with finding the ASCII value of :
which is 58
.
See ASCII table for the mapping table.
Convert 58
to binary using Short division by Two with Reminder.
i.e. Divide the answer by 2
and keeping the reminder aside which will become the binary form.
58/2 = 29 => Reminder 0
29/2 = 14 => Reminder 1
14/2 = 7 => Reminder 0
7/2 = 3 => Reminder 1
3/2 = 1 => Reminder 1
1/2 = na => Reminder 1
So the binary form is 111010
if we line up all the reminders.
Padding the output will make it 00111010
.
Next, we split the binary into two parts of 4 bits each.
0011
1010
Then using the following Hex table conversion, we map 0011
=> 3 and 1010
to A which becomes 3A
.
Decimal | Binary | Hex |
---|---|---|
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
The final part is to prefix it with %
(which is the escape character) making it %3A
which is the output we are expecting. 🎉
Top comments (0)