int -> IP
Klaus Baldermann
kbaldermann at entire-systems.com
Tue Nov 30 08:57:40 EST 1999
Andrew M. Kuchling wrote in message
<3dg0y1nimy.fsf at amarok.cnri.reston.va.us>...
>sbarron at twilight. (Scott Barron) writes:
>> The string is a representation of the IP address as a long int in network
>> byte order. For example 16777343 would be 127.0.0.1. So it can't be
>def transip2 (ipstr):
> # Pack into a 4-byte integer
> s = struct.pack('!L', string.atol(ipstr) )
>
> # Unpack as 4 bytes
> L = struct.unpack('!4B', s)
>
> return `L[3]`+'.' + `L[2]`+'.'+`L[1]`+'.'+`L[0]`
PMFJI a bit late, but the last line looks a bit tedious to type :-)
packing it the other direction (little endian) enables us using string.join:
>>> from struct import pack, unpack
>>> from string import atol, join
>>> def transip3(long): return join(map(str,unpack('4B', pack('<L',
atol(long)))), '.')
>>> transip3('16777343')
'127.0.0.1'
>>> transip3('2227275982')
'206.136.193.132'
>>>
map-filter-and-reduce-remind-me-of-APL-ly yours
Klaus
More information about the Python-list
mailing list