私はIPv6アドレスを持っており、人間が読める形式でプリントしたいと思います。 IPv4アドレスでPythonでIPV6アドレスをデコード/プリントするには
私はsocket.inet_ntoa(...)
をしましたが、IPv6の上で、私は(IPv4のみである)の代わりにinet_ntoa
の(IPv4とIPv6の両方のために働く)
socket.error: packed IP wrong length for inet_ntoa
私はIPv6アドレスを持っており、人間が読める形式でプリントしたいと思います。 IPv4アドレスでPythonでIPV6アドレスをデコード/プリントするには
私はsocket.inet_ntoa(...)
をしましたが、IPv6の上で、私は(IPv4のみである)の代わりにinet_ntoa
の(IPv4とIPv6の両方のために働く)
socket.error: packed IP wrong length for inet_ntoa
使用inet_ntop
を取得します。
print(socket.inet_ntop(socket.AF_INET6, socket.inet_pton(socket.AF_INET6, '10::')))
socket.inet_ntoa(packed_ip)(その標準のドット付きクワッドストリング 表現に32ビットのパックされたIPv4アドレス( 文字列の長さの4文字)に変換たとえば、「123.45.67.89」)。これは、 標準Cライブラリを使用するプログラムと対話し、struct in_addrタイプのオブジェクト を必要とする場合に便利です。これは、この関数が引数として取る32ビットの パックバイナリデータのCタイプです。
この関数に渡される文字列が、 の長さで正確に4バイトでない場合、socket.errorが送出されます。 inet_ntoa()は IPv6をサポートしておらず、IPv4/v6デュアルスタック サポートの代わりにinet_ntop()を使用する必要があります。
ライブラリIPyは、IPv4とIPv6の世話をするために使用できます。
>>> print(IP('1080:0:0:0:8:800:200C:417A'))
1080::8:800:200c:417a
'inet_ntop'に加えて、' socket.NI_NUMERICHOST'をフラグとして 'socket.getnameinfo()'を使うこともできます。 –