2015-10-20 42 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

相關問題