PythonでIPv4アドレスを別の形式に変換する
PythonでIPv4アドレスを別の形式に変換する
低レベルネットワーク機能を扱いたいときに、IPアドレスを普通の文字列で表記すると扱いにくい。
そこで、パックされた32bitバイナリ形式に変換する。
コードは以下の通り:
#!/usr/bin/env python # -*- coding: utf-8 -*- import socket from binascii import hexlify def convert_ip4_address(ip_address): """ パックしたIPアドレスと元のアドレスを表示する """ packed_ip_addr = socket.inet_aton(ip_address) unpacked_ip_addr = socket.inet_ntoa(packed_ip_addr) print "Packed: %s, Unpacked: %s" % (hexlify(packed_ip_addr), unpacked_ip_addr) if __name__ == '__main__': convert_ip4_address(ip_address='127.0.0.1')
inet_aton(ip_string)は、IPv4アドレスを32bitにパックしたバイナリ形式に変換し、長さ4の文字列として返す。
inet_ntoa(packed_ip)は、32bitにパックしたバイナリ形式のIPv4アドレスをドット記法による文字列(‘127.0.0.1’など)に変換する。
hexlify()はバイナリデータを16進数表記へ変換する。