如何在Python中将字符串转换为IP地址

3

如何将字符串IP地址转换为十进制数。例如,我有一个数据bytes= b'363,3,1778952384,7076',其中1778952384是我的IP地址,7076是我的端口。如何将IP地址转换为十进制数。下面是我的代码,请帮我解决这些问题。

/app.py

import socket
from tornado.tcpclient import TCPClient
from tornado import gen

@gen.coroutine
def f(self, message):

    global stream
    client = TCPClient()
    stream = yield client.connect('192.168.8.108', 2620, max_buffer_size=int(1e9))
    msg = '192.168.8.101, 8000'.encode('utf-8')
    yield stream.write(msg)
    data = yield stream.read_bytes(21)
    print("bytes=",data) #bytes= b'363,3,1778952384,7076

1
你为什么要这样做? - BugHunter
1个回答

7

Python有一个ipaddress模块可以处理这种情况。它是在Python 3中添加到标准库的,但也可以安装到早期版本。

>>> import ipaddress
>>> print(ipaddress.ip_address(1778952384))
IPv4Address('106.8.168.192')
>>> print(str(ipaddress.ip_address(1778952384)))
'106.8.168.192'

你可能还想知道如何拆分这个字符串(因为它是一个字节串,所以要使用b','作为分隔符),获取正确的字段并将其转换为int

data = b'363,3,1778952384,7076'
ipaddress.ip_address(int(data.split(b',')[2]))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接