Hi Alan, Yes, agreed that any '!I' or '!L' combination will work on different type of platforms in a consistent manner, when applied in both directions.
I was referring to Alex Martelli's output, where the conversion back to IP seems to be reversed, even with '!L', which means that he's already with a little-endian byte order and using 'L' or '<L' for the unpacking... A more detailed example: >>> ip = '1.2.168.0' >>> struct.unpack('L', socket.inet_aton(ip))[0] 11010561 >>> struct.unpack('<L', socket.inet_aton(ip))[0] 11010561 >>> struct.unpack('!L', socket.inet_aton(ip))[0] 16951296 >>> >>> socket.inet_ntoa(struct.pack('!L',11010561)) '0.168.2.1' >>> socket.inet_ntoa(struct.pack('<L',11010561)) <-- for that specific case '1.2.168.0' >>> socket.inet_ntoa(struct.pack('!L',16951296)) '1.2.168.0' >>> Greets, Alex -- https://mail.python.org/mailman/listinfo/python-list