簡體   English   中英

如何在python中解碼/打印IPV6地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM