[英]How can I decode/print an IPV6 address in python
我有一個IPv6地址,我想以人類可讀的格式打印它。
在IPv4地址上,我執行了socket.inet_ntoa(...)
,但是在IPv6上,我得到了
socket.error: packed IP wrong length for inet_ntoa
使用inet_ntop
(適用於IPv4和IPv6)而不是inet_ntoa
(僅適用於IPv4)。
print(socket.inet_ntop(socket.AF_INET6, socket.inet_pton(socket.AF_INET6, '10::' )))
從文檔中 :
socket.inet_ntoa(packed_ip)將32位壓縮的IPv4地址(長度為四個字符的字符串)轉換為其標准的點分四進制字符串表示形式(例如'123.45.67.89')。 與使用標准C庫並需要struct in_addr類型的對象的程序進行對話時,此功能很有用。該對象是此函數作為參數的32位打包二進制數據的C類型。
如果傳遞給此函數的字符串長度不完全是4個字節,則會引發socket.error。 inet_ntoa()不支持IPv6,而應使用inet_ntop()來支持IPv4 / v6雙棧。
您可以使用庫IPy來處理IPv4和IPv6。
>>> print(IP('1080:0:0:0:8:800:200C:417A'))
1080::8:800:200c:417a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.