Beste pythonliefhebbers,

Als een beginnend python gebruiker heb ik een vraag die jullie hopelijk
makkelijk kunnen beantwoorden. De onderstaande code converteert een ipv6
adres in decimal notatie om naar hex. Op de cli geef ik het volgende in:

python decToHex.py 32.1.6.16.15.2.1.32.0.0.0.0.0.0.1.34

waarop ik dit verwacht:

2001:610:f02:120:0:0:0:122

Echter ik krijg dit:

2001:610:f02:120:0:0:0:122None

Waar komt die None vandaan? Ik dacht in eerste instantie dat het de waarde
in array_ip[15] was maar dit is het niet. Hebben jullie een idee?

Bedankt alvast!


Groeten Tijmen

import string
import sys

def printIPv6(ip):
        array_ip = ip.split('.')
        ipv6_tuple = []
        for i in array_ip:
                ipv6_tuple.append(hex(int(i))[2:])

        i = 0
        while i < 14:
                sys.stdout.write(decToHex(array_ip[i], array_ip[i+1]) + ":")
                i = i+2
        sys.stdout.write(decToHex(array_ip[14], array_ip[15]))

def toHex(i):
        """Convert an int into a hex string (without the leading 0x)"""
        return hex(i)[2:]

def decToHex(a, b):
        if int(a) + int(b) == 0:
                return toHex(int(a))
        elif (int(b)) < 10:
                return toHex(int(a)) + "0" + toHex(int(b))
        else:
                return toHex(int(a)) + toHex(int(b))

print printIPv6(sys.argv[1])
_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan