在python中将IP地址转换为字节

时间:2015-10-20 19:01:42

标签: python ip

假设我在python中有一个IP地址

addr = '164.107.113.18'

如何将IP地址转换为4个字节?

2 个答案:

答案 0 :(得分:5)

使用socket.inet_aton

>>> import socket
>>> socket.inet_aton('164.107.113.18')
'\xa4kq\x12'
>>> socket.inet_aton('127.0.0.1')
'\x7f\x00\x00\x01'

这将返回一个字节字符串(或Python 3.x上的bytes对象),您可以从中获取字节。或者,您可以使用struct来获取每个字节的整数值:

>>> import socket
>>> import struct
>>> struct.unpack('BBBB', socket.inet_aton('164.107.113.18'))
(164, 107, 113, 18)

答案 1 :(得分:2)

使用Maciej Gol's answer,但是另一种方式:

ip = '192.168.1.1'
ip_as_bytes = bytes(map(int, ip.split('.')))

编辑:哎呀,这只是Python 3.X。对于Python 2.X

ip = '192.168.1.1'
ip_as_bytes = ''.join(map(chr,map(int,ip.split('.'))))

你最好使用socket module,但是,考虑到它的效率:

>>> timeit.timeit("socket.inet_aton('164.107.113.18')",setup='import socket')
0.22455310821533203
>>> timeit.timeit("''.join(map(chr,map(int,'164.107.113.18'.split('.'))))")
3.8679449558258057