2012-05-11 14 views
5

मैं inet_aton उपयोग कर रहा हूँ एक स्ट्रिंग 3624718222. मैं उस के लिए निम्न कोड का उपयोग करने के आईपीवी 4 आईपी (216.12.207.142) कन्वर्ट करने के लिए के लिए inet_aton समान कार्य: 23 :: 207: 142 एक समान स्ट्रिंग के लिए। यह मुझे त्रुटि देता है क्योंकि यह आईपीवी 4 पता नहीं है। मैं यह कैसे कर सकता हूँ?आईपीवी 6

उत्तर

6

यह वह कोड है जिसका मैंने पहले उद्देश्य के लिए उपयोग किया है। ध्यान दें कि यह एक 128 बिट पूर्णांक रिटर्न नहीं बल्कि एक स्ट्रिंग से (एक पूर्णांक सामान्य रूप में अधिक उपयोगी है)

from socket import inet_pton, AF_INET6 
from struct import unpack 

def ip6_to_integer(ip6): 
    ip6 = inet_pton(AF_INET6, ip6) 
    a, b = unpack(">QQ", ip6) 
    return (a << 64) | b 

और यह

>>> ip6_to_integer("2001:23::207:142") 
42540490934961530759802172199372521794L 

या यदि आप चाहिए एक स्ट्रिंग के रूप परीक्षण!

>>> str(ip6_to_integer("2001:23::207:142")) 
'42540490934961530759802172199372521794' 
संबंधित मुद्दे