2015-10-20 35 views
0

所以这很简单,但我无法正常工作。我想,例如,如果输入的IP地址字符串为“168.108.114.22”,将其转换为一个字节对象像:在Python中将IP地址字符串正好转换为4个字节

\xA8\x6C\x72\x16 

基本上IP地址的每一部分被转换为它的等效十六进制。

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

回答

1

ip='168.108.114.22' 

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

在巨蟒-3产生

b'\xa8lr\x16' 

这应该是你在找什么,如果我理解正确。

注:也有更具体和优化效用函数来处理IP地址

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 
+0

我将如何转换这回IP地址的插座的另一端?如果我通过这种方式发送它,使用inet_aton转换后。 – user2055216

+0

[ntoa](https://docs.python.org/3/library/socket.html?highlight=aton#socket.inet_ntoa)即network-to-ascii(它们都来自好C) – Pynchia

相关问题