Converting IPv4 to IPv6 and back

Ensurepass

Converting from to

Is so easy, yet everyone seem to convert a IPv4 address to binary, then to IPv6. Why? Why waste time and do things the long way? Not cool.

Firstly before starting I will assume everyone knows the following:

  • Binary is a Base-2 numbering system, as it has only 0,1
  • Decimal is a Base-10 numbering system, as it has 0,1,2,3,4,5,6,7,8,9
  • Hexadecimal is a Base-16 numbering system, as it has 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
  • I also assume you know the hex values in decimal:

A = 10
B = 11
C = 12
D = 13
E = 14
F = 15

Two more things I would like to mention before explaining the conversion.
An IPv4 address : example 192.168.99.1

  • Each Octet (8 bits) “between the dot-thingys” denote 1 byte

An IPv6 address : example 2001:0db8:85a3:0000:0000:8a2e:0370:7334

  • Two Tuples (1 Tuple = 4 bits = 1 Hex character) denotes 1 byte

Then converting is easy. Lets take the following IPv4 address : 192.168.99.1 and convert it to Hex.

Step1 >

Divide the first octet (192) by 16 (since Hex is a Base-16)
IE : 192/16 = 12 times exactly with 0 left over
– 12 in Hex is represented as C
– 0 (zero) in Hex is, you guessed it, 0
Thus 192 in HEX is C0

Step2 >

Repeat step 1 with the second octet (168),
IE : 168/16 = 10 times with 8 left over because 10*6 = 160,
– 10 in HEX is A
– 8 in HEX is 8
Thus 168 in HEX is A8

Step3 >

Repetition rules!!! Third octet (99)
IE : 99/16 = 6 times with 3 left over
– 6 in HEX is 6
– 3 in HEX is 3
Thus 99 in HEX is 63

Step4 >

Last octet
IE : 1/16 = 0 times with 1 left over
– 0 in HEX is, yeah it is 0
– 1 in HEX is 1
Thus 1 in HEX is 01

So the IPv4 address of 192.168.99.1 in IPv6 address format is C0A8:6301
See, not all that difficult, if you know your 16 multiplication table, you can do this in your head, no problems.

– – – –

Converting back from IPv6 to IPv4

Now to convert the address C0A8:6301 back to IPv4, the reverse method would apply.

Let me point one more thing about Base-16 out to understand why I’m doing what I am below:

160 = 1

161 = 16

Taking the same address C0A8:6301, first divide the address into 2 Tuple-groupings (2 Hex Characters) = C0 A8 63 01

Step1 >

Take C0 and multiply the first character ‘C’ by 16 and the second character ‘0′ by 1.
Add the two decimal values together to get the IPv4 decimal value
IE: ((C=12)*16) + (0*1) = 192

Step2 >

Repeat the same process with A8,
IE: ((A=10)*16) + (8*1) = 168

Step3 >

Repeat the same process with 63,
IE: (6*16) + (3*1) = 99

Step4 >

Repeat the same process with 01,
IE: (0*16) + (1*1) = 1

This will give you an IPv4 address of 192.168.99.1

Easy, easy!

Source





[Report Dead Link] Please leave a comment or send email to report dead links, so that we will update new links within 24 hours.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.