在Python中将IP地址字符串转换为4个字节

时间:2015-10-20 20:52:50

标签: python sockets ip byte

所以这很简单,但我无法解决这个问题。我想,例如,如果传入的IP地址字符串是'168.108.114.22',请将其转换为字节对象,如:

\xA8\x6C\x72\x16

基本上,IP地址的每个部分都转换为十六进制等效值。

我尝试了很多方法,却无法得到我想要的东西。字符串操作,使用socket.inet_aton,打包等。我希望能够通过套接字发送这些字节,然后在另一端接收和解析它们,但是我只是在创建我的字节对象并且看起来像那样

2 个答案:

答案 0 :(得分:2)

Python的inet_aton函数应该做你需要的,它确实返回一个包含4个字节的字符串:

import socket

print socket.inet_aton('168.108.114.22')
print socket.inet_aton('65.66.67.68')

这些会显示:

¨lr
ABCD 

使用inet_ntoa再次转换四个字符:

print socket.inet_ntoa('\xA8\x6C\x72\x16')
print socket.inet_ntoa('ABCD')

,并提供:

65.66.67.68

答案 1 :(得分:1)

ip='168.108.114.22'

b_out = bytes(map(int,ip.split('.')))
print(b_out)

在python 3上生成

b'\xa8lr\x16'

如果我理解正确,那应该是你要找的。

注意:有更多特定和优化的实用程序函数来操作IP地址