我在iOS App Pythonista 3上运行python。 当我尝试获取IPv6地址时,它会结束 返回字节而不是格式化地址。 现在我正试图找到一种方法来正确地获取地址而没有字节,或者找到一种方法使字节成为地址。 这是我为获取地址而运行的代码:
def getIPv6Addr(input):
return socket.getaddrinfo(input, None, socket.AF_INET6)
这是输出:
[(30, 2, 17, '', (30, '\x00\x00\x00\x00\x00\x00&\x07\xf8\xb0@\x00\x08\x14')), (30, 1, 6, '', (30, '\x00\x00\x00\x00\x00\x00&\x07\xf8\xb0@\x00\x08\x14'))]
编辑:另一种解决方案是找到使用何种类型的编码将此数据转换为字节。
What Makes:
2607:f8b0:4000:814::200e
become
\x00\x00\x00\x00\x00\x00&\x07\xf8\xb0@\x00\x08\x14
答案 0 :(得分:0)
如果你使用这个包,有一个快捷的方法:
from django.utils.encoding import smart_str
a = '\x00\x00\x00\x00\x00\x00&\x07\xf8\xb0@\x00\x08\x14'
print(smart_str(a))
答案 1 :(得分:0)
您可以使用python附带的ipaddress
模块。只需将字节传递给ipaddress.IPv6Address
的构造函数,您就会获得一个表示地址的对象,并为您提供大量打印和操作它的可能性。
答案 2 :(得分:0)
我用十六进制对字节进行编码 它成了地址!
>>> getIPv6Addr("google.com")[0][4][1].encode("hex")
'0000000000002607f8b040000811'